我正在尝试使用crypto-js加密字符串,并使用crypto(AES 256 CBC)对其解密。但是如果该消息是“ *要加密的测试消息*”,我得到的输出中,后半部分可以正常使用,但前半部分具有类似“���〜t_�d}〜a'/ o加密*”的垃圾。如果我使用crypto-js解密就可以了。
这是我用来加密的代码:
let CryptoJS = require('crypto-js');
let ENC_KEY = "ABCDEFGHJKLMNOPQABCDEFGHJKLMNOPQ";
let IV = "ABCDEFGHJKLMNOPQ";
var encrypted = CryptoJS.AES.encrypt(
"* test message to be encrypted *",
CryptoJS.enc.Utf8.parse(ENC_KEY),
{
iv: CryptoJS.enc.Hex.parse(IV),
mode: CryptoJS.mode.CBC
}
);
console.log(encrypted);
这是要解密的代码:
let crypto = require('crypto');
var messageToDecrypt = Buffer.from(message, "base64");
var key = Buffer.from(ENC_KEY, "utf8");
var iv = Buffer.from(IV, "utf8");
var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
var clearText = decipher.update(messageToDecrypt, 'base64', 'utf-8');
clearText += decipher.final("utf-8");
console.log(clearText);