Javascript 解密数组中的每个元素
我有一个用Javascript 解密数组中的每个元素,javascript,cryptojs,Javascript,Cryptojs,我有一个用CryptoJS加密的n字符串元素数组:[krypt1,krypt2,krypt3,…] 每个元素的密钥解密都是相同的。 我尝试解密数组中的每个元素,并返回一个字符串解密元素数组,如下所示[dekrypt1,dekrypt2,dekrypt3,…] 我的代码是: var urltodecrypt = this.url.chunk; function decrypteach(x) { return CryptoJS.AES.decrypt(x.toString(), keydec
CryptoJS
加密的n
字符串元素数组:[krypt1,krypt2,krypt3,…]
每个元素的密钥解密都是相同的。
我尝试解密数组中的每个元素,并返回一个字符串解密元素数组,如下所示[dekrypt1,dekrypt2,dekrypt3,…]
我的代码是:
var urltodecrypt = this.url.chunk;
function decrypteach(x) {
return CryptoJS.AES.decrypt(x.toString(), keydecrypt).toString(CryptoJS.enc.Utf8);
}
var clearfileurl = urltodecrypt.map(decrypteach);
当数组中有1个元素时,一切正常:它返回一个正确解密的字符串元素数组
当有>1个元素时,var-urltodecrypt
仍给出正确的数组(已验证),但var-clearfileurl
返回错误:错误:格式错误的UTF-8数据
我错过了什么
编辑
在@vector Advisements上尝试了每个元素函数上的一个循环
:
您已经提供了代码,但还没有显示出它应该有什么问题。请您的问题提供示例输入、输出和预期输出。您是在数组元素上循环还是同时将整个数组送入decrypteach()中?@vector,该问题由代码回答:
map
@vector将整个数组送入decrypteach()中首先,您的代码不显示位置[dekrypt1,dekrypt2,dekrypt3,…]已初始化。看起来您需要在数组上循环并一次返回一个解密的元素,这就是为什么当数组中有1个元素而不是2个或更多元素时它对您有效。因此,为每个数组元素调用decrypt函数一次,或者在函数中循环并返回解密项数组,不是吗?
var urltodecrypt = this.url.chunk;
var arrayLength = urltodecrypt.length;
for (var i = 0; i < arrayLength; i++) {
var clearfileurl = CryptoJS.AES.decrypt(urltodecrypt.toString(), keydecrypt).toString(CryptoJS.enc.Utf8);
}
console.log (clearfileurl);
var urltodecrypt = this.url.chunk;
console.log (urltodecrypt);
function decrypteach(x) {
var stringurl = x.toString();
var bytesfileurl = CryptoJS.AES.decrypt(stringurl, keydecrypt);
var finaldecrypturl = bytesfileurl.toString(CryptoJS.enc.Utf8);
return finaldecrypturl;
}
var clearfileurl = urltodecrypt.map(decrypteach);
console.log (clearfileurl);