Vue RSA加密和解密
接到一个需求,需要对我们的密码进行加密,然后再传输。以前搞过,但是不是Vue中的。现在用Vue弄一遍,大致的思路是一样的。如果你还不了解什么是RSA的话,可以看看这个和这个。话不多说,首先是安装
1 npm i jsencrypt -D
2 npm i encryptlong -S //encryptlong是基于jsencrypt扩展的长文本分段加解密功能
安装完成之后,需要创建一个rsa.js,为了是方便咱们使用和以后的管理操作。生成一对公钥和密钥
1 // 密钥对生成 http://web.chacuo.net/netrsakeypair2 // 公钥key
3 const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
4 '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
5 // 私钥key
6 const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' +
7 'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' +
8 'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' +
9 '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' +
10 'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' +
11 'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' +
12 '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' +
13 'tTbklZkD2A=='
然后方法的话,其实是一样的
1 export default {2 /* JSEncrypt加密 */
3 rsaPublicData(data) {
4 var jsencrypt = new JSEncrypt()
5 jsencrypt.setPublicKey(publicKey)
6 // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
7 var result = jsencrypt.encrypt(data)
8 return result
9 },
10 /* JSEncrypt解密 */
11 rsaPrivateData(data) {
12 var jsencrypt = new JSEncrypt()
13 jsencrypt.setPrivateKey(privateKey)
14 // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
15 var result = jsencrypt.encrypt(data)
16 return result
17 },
18 /* 加密 */
19 encrypt(data) {
20 const PUBLIC_KEY = publicKey
21 var encryptor = new Encrypt()
22 encryptor.setPublicKey(PUBLIC_KEY)
23 // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
24 const result = encryptor.encryptLong(data)
25 return result
26 },
27 /* 解密 - PRIVATE_KEY - 验证 */
28 decrypt(data) {
29 const PRIVATE_KEY = privateKey
30 var encryptor = new Encrypt()
31 encryptor.setPrivateKey(PRIVATE_KEY)
32 // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
33 var result = encryptor.decryptLong(data)
34 return result
35 }
36 }
写完之后,还需要把这个方法注册成为全局的方法,这个时候,需要再main.js中添加下面的话
import Rsa from "@/utils/rsa.js"Vue.prototype.Rsa = Rsa // 将Rsa注册为公共方法,方便其他页面调用
然后就可以使用了。
1 <template>2 <div class="">
3 <p></p>
4 <el-input v-model="rasEncryptData.reqStr" placeholder="请输入内容"></el-input>
5 <el-button icon="el-icon-search" circle @click="reqTest"></el-button>
6 <el-row>
7 <el-col :span="24"><div class="grid-content bg-purple">加密的数据:<p>{{rasEncryptData.encryptStr}}</p></div></el-col>
8 <el-col :span="24"><div class="grid-content bg-purple-light"></div>解密的数据:{{rasEncryptData.decryptStr}}</el-col>
9 </el-row>
10 </div>
11 </template>
12
13 <script>
14 export default {
15 data() {
16 // 定义数据
17 return {
18 rasEncryptData: {
19 // 加密后数据
20 reqStr: "", // 加密前数据
21 encryptStr: "", // 加密后数据
22 decryptStr: "" // 解密后数据
23 }
24 };
25 },
26 methods: {
27 // 定义方法
28 reqTest() {
29 this.rasEncryptData.encryptStr = this.Rsa.encrypt(
30 this.rasEncryptData.reqStr
31 ); // 加密
32 this.rasEncryptData.decryptStr = this.Rsa.decrypt(
33 this.rasEncryptData.encryptStr
34 ); // 解密
35 }
36 },
37 mounted() {
38 // 此时已经将编译好的模板,挂载到了页面指定的容器中显示
39 },
40
41 };
42 </script>
43 <style lang="scss" scoped>
44 p{
45 word-break: break-all;
46 }
47 </style>
以上是 Vue RSA加密和解密 的全部内容, 来源链接: utcz.com/z/380328.html