我正在使用OpenSSL来加密txt文件,使用" Hello World"在内部,在终端使用以下命令:
openssl enc -aes-128-ctr -in file.txt -out file-out-64.txt -base64 -A
-K 0123456789abcdef0123456789abcdef -iv 00000000000000000000000000000000`
所以,我使用AES-128(CTR模式)和虚拟键以及IV并在最后生成base64,产生以下输出:Mc6prldI + uuh5Ko =
我想用CryptoJS解密它,我使用以下代码:
CryptoJS.AES.decrypt(
"Mc6prldI+uuh5Ko=",
CryptoJS.enc.Hex.parse("0123456789abcdef0123456789abcdef"),
{
iv : CryptoJS.enc.Hex.parse("00000000000000000000000000000000"),
mode : CryptoJS.mode.CTR
}
);
我期待" Hello World"输出,但它产生一个空字符串结果。有人可以帮忙吗?
答案 0 :(得分:1)
我找到了解决方案。在options参数中,我必须使用NoPadding
添加填充var decoded = CryptoJS.AES.decrypt("Mc6prldI+uuh5Ko=", CryptoJS.enc.Hex.parse("0123456789abcdef0123456789abcdef"), { iv: CryptoJS.enc.Hex.parse("00000000000000000000000000000000"), padding: CryptoJS.pad.NoPadding, mode: CryptoJS.mode.CTR });
答案 1 :(得分:0)
试过这个?
var decrypt = CryptoJS.AES.decrypt(CryptoJS.enc.Base64.parse("Mc6prldI+uuh5Ko="), CryptoJS.enc.Hex.parse("0123456789abcdef0123456789abcdef"), { iv: CryptoJS.enc.Hex.parse("00000000000000000000000000000000"), mode: CryptoJS.mode.CTR });