Vue RSA加密和解密

vue

  接到一个需求,需要对我们的密码进行加密,然后再传输。以前搞过,但是不是Vue中的。现在用Vue弄一遍,大致的思路是一样的。如果你还不了解什么是RSA的话,可以看看这个和这个。话不多说,首先是安装

1 npm i jsencrypt -D
2 npm i encryptlong -S //encryptlong是基于jsencrypt扩展的长文本分段加解密功能

安装完成之后,需要创建一个rsa.js,为了是方便咱们使用和以后的管理操作。生成一对公钥和密钥

 1 // 密钥对生成 http://web.chacuo.net/netrsakeypair

2 // 公钥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

回到顶部