我的应用场景后端对接口数据进行 DES 加密,前端需要解密,前后端需统一 key 值,加密方式,填充方式以及返回数据编码(我这是 base64);于是使用到了 crypto-js 库,使用这个库时候。需要将数据转换成它内部的数据类型 wordArray,解密出来的数据也是 wordArray 需要转换,crypto-js 库内部提供转换方法。
加密的数据:
安装 crypto-js
DES 加密解密
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| import CryptoJS from "crypto-js";
const key = CryptoJS.enc.Utf8.parse("2f4a0f6166b8d404");
const iv = CryptoJS.lib.WordArray.random(8);
function encryptByDES(message) { const encrypted = CryptoJS.DES.encrypt(message, key, { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, iv, }); return encrypted.ciphertext.toString(CryptoJS.enc.Base64); }
function decryptByDES(ciphertext) { const cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Base64.parse(ciphertext), }); const decrypted = CryptoJS.DES.decrypt(cipherParams, key, { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, iv, }); return decrypted.toString(CryptoJS.enc.Utf8); }
|