import CryptoJS from "crypto-js" //秘钥(后端提供)由于对称解密使用的算法是 AES-128-CBC算法,数据采用 PKCS#7 填充 , 因此这里的 key 需要为16位! var key = CryptoJS.enc.Latin1.parse("xxxxxx"); // 偏移量(后端提供) var iv = CryptoJS.enc.Latin1.parse("xxxxxxx"); export default { //加密 encrypt(data) {
// data = data.replace(/[\r\n]/g, "");如果data有换行回导致报错,所以用回这个来进行换行清除
var srcs = CryptoJS.enc.Utf8.parse(data); var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); }, //解密 decrypt(encrypted) { var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } }
注意:上述,加解密算法/工作模式/填充方式:AES/CBC/Pkcs7,
秘钥、偏移量、加解密算法、工作模式、填充方式,均要与后端一致