本次加解密的方法为:AES,模式为CBC,填充模式为Pkcs7。
使用nodejs的crypto-js进行解密
function aesDecrypt(encrypted, key, iv) { // 解密
// 秘钥key以及iv都需要通过Utf8进行转码
// 密文为Base64格式的话,不需要其他转码操作
// 解密之后需要通过toString(CryptoJS.enc.Utf8)转为字符串
// 密文如果是Hex格式的话,需要进行Base64的转码
// const encryptedHexStr = CryptoJS.enc.Hex.parse(encrypted);
// const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
const keydata = CryptoJS.enc.Utf8.parse(key);
const ivs = CryptoJS.enc.Utf8.parse(iv);
const datas = CryptoJS.AES.decrypt(encrypted, keydata, {
iv: ivs,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
const data = datas.toString(CryptoJS.enc.Utf8);
return data;
}
跨平台解密时,如果没有iv是解不出来的,这一点需要特别注意