我正在尝试使用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库是否有问题?如果没有,该如何解决?
答案 0 :(得分:0)
解码后的文件由随机字节组成,这些字节似乎是延迟生成的(即在需要时)。根据定义,仅打印字节将不会产生任何有用的结果,因为字节具有随机值。对JavaScript的支持有些棘手,因为JavaScript不会将字节用作原始类型(因此称为单词数组)。
要查看字节,请先将其编码为十六进制,然后 打印它们。