songmengyao

本文介绍的rsa加解密方法,适合react,vue,angular框架的前端项目

 

1. 安装cryto-js:npm install crypto-js

2. rsa加密解密函数:(cbc模式,base64格式,zeroPadding,16位)

 1 import CryptoJS from \'crypto-js/crypto-js\'
 2 
 3 // 默认的 KEY 与 iv 如果没有给
 4 const KEY = CryptoJS.enc.Utf8.parse("1234567890123456");
 5 const IV = CryptoJS.enc.Utf8.parse(\'1234567890123456\');
 6 /**
 7  * AES加密 :字符串 key iv  返回base64 
 8  */
 9 export function Encrypt(word, keyStr, ivStr) {
10   let key = KEY
11   let iv = IV
12 
13   if (keyStr) {
14     key = CryptoJS.enc.Utf8.parse(keyStr);
15     iv = CryptoJS.enc.Utf8.parse(ivStr);
16   }
17 
18   let srcs = CryptoJS.enc.Utf8.parse(word);
19   var encrypted = CryptoJS.AES.encrypt(srcs, key, {
20     iv: iv,
21     mode: CryptoJS.mode.CBC,
22     padding: CryptoJS.pad.ZeroPadding
23   });
24  // console.log("-=-=-=-", encrypted.ciphertext)
25   return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
26 
27 }
28 /**
29  * AES 解密 :字符串 key iv  返回base64 
30  *
31  */
32 export function Decrypt(word, keyStr, ivStr) {
33   let key  = KEY
34   let iv = IV
35 
36   if (keyStr) {
37     key = CryptoJS.enc.Utf8.parse(keyStr);
38     iv = CryptoJS.enc.Utf8.parse(ivStr);
39   }
40 
41   let base64 = CryptoJS.enc.Base64.parse(word);
42   let src = CryptoJS.enc.Base64.stringify(base64);
43 
44   var decrypt = CryptoJS.AES.decrypt(src, key, {
45     iv: iv,
46     mode: CryptoJS.mode.CBC,
47     padding: CryptoJS.pad.ZeroPadding
48   });
49 
50   var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
51   return decryptedStr.toString();
52 }

3. 在组件中使用:

1 import {Decrypt, Encrypt} from \'刚刚封装的js\'
2 
3 var parm1 = Decrypt(\'加密的字段\', key, iv)
4 console.log(\'加密之后的字段:\', parm1)
5 
6 var parm2 = Decrypt(\'解密的字段\', key, iv)
7 console.log(\'解密之后的字段:\', parm2)

 

备注:密钥最好是数字,不然可能会报错(报代码的错误,其实代码没问题)

 

分类:

技术点:

相关文章: