本文介紹的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)
備注:密鑰最好是數字,不然可能會報錯(報代碼的錯誤,其實代碼沒問題)
