在OpenSSL加密后使用CryptoJS进行解密

时间:2015-05-14 08:24:31

标签: javascript openssl cryptojs

我正在使用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"输出,但它产生一个空字符串结果。有人可以帮忙吗?

2 个答案:

答案 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 });