CryptoJS解码返回值

时间:2018-08-21 19:37:28

标签: javascript cryptojs

我正在尝试使用CryptoJS将数据编码到Base64。我的代码如下:

let key = "test";
let iv = myCrypto.lib.WordArray.random(16);
let newKey = myCrypto.PBKDF2(key, iv, {keySize: 128/32});
let encrypted = myCrypto.AES.encrypt("hello", newKey, {iv: iv});
let ivString = myCrypto.enc.Base64.stringify(iv);
let decoded = myCrypto.enc.Base64.parse(ivString);

当我打印解码后,我会得到以下输出:

{ init: [Function],
  '$super':
   { init: [Function],
     toString: [Function: toString],
     concat: [Function: concat],
     clamp: [Function: clamp],
     clone: [Function: clone],
     random: [Function: random],
     '$super':
      { extend: [Function: extend],
        create: [Function: create],
        init: [Function: init],
        mixIn: [Function: mixIn],
        clone: [Function: clone] } },
  words: [ -1828772172, 1815131715, 749929333, 1399144403 ],
  sigBytes: 16 }

如果我尝试使用HEX进行编码,则会获得预期的输出。

CryptoJS库是否有问题?如果没有,该如何解决?

1 个答案:

答案 0 :(得分:0)

解码后的文件由随机字节组成,这些字节似乎是延迟生成的(即在需要时)。根据定义,仅打印字节将不会产生任何有用的结果,因为字节具有随机值。对JavaScript的支持有些棘手,因为JavaScript不会将字节用作原始类型(因此称为单词数组)。

要查看字节,请先将其编码为十六进制,然后 打印它们。