我在Nodejs上使用AES加密和CryptoJS库,一切正常,但最后我想将IV放入前16个字节,然后将加密数据放入数组字节,然后将其放入base64,但我不知道如何在nodejs中执行此操作
let secret = 'Hello';
var key = CryptoJS.enc.Base64.parse('QVNES0FVemFzZHVoMjM0MzIyNjlCNTIyRTcwNUQ0RjI=');
let ivByte= crypto.randomBytes(16);
let newIV= this.toCryptoJSWordArray(ivByte);
我将像这样加密:
CryptoJS.AES.encrypt(secret, key, {iv: newIV, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7});
这一切都很好,结果是:
console.log({
text:'Hello',
iv:CryptoJS.enc.Base64.stringify(newIV),
enc:CryptoJS.enc.Base64.stringify(e1.ciphertext),
})
都输出IV和加密文本base64正确,正如我所期望的
现在我想把这两个字节组合成一个数组(比如前16个字节是IV +加密数据(没有一个是base64),然后把它们转换成base64格式,意思是在base64之前的u IV和加密文本把它们组合成一个数组,然后把它们组合成base64,但我不知道怎么做。预期输出是:数量
1条答案
按热度按时间guicsvcw1#
CryptoJS为WordArrays的连接提供了
concat()
:wa1.concat(wa2)
。这会将wa2
附加到wa1
。如果不更改
wa1
,则将其与clone()
复制:wa1.clone().concat(wa2)
: