解密数组的每个元素

时间:2017-04-27 20:38:13

标签: javascript cryptojs

我已经使用n加密了一系列CryptoJS字符串元素:[krypt1, krypt2, krypt3, ...]

每个元素的keydecrypt都相同。

我尝试解密数组的每个元素并返回一个字符串解密元素数组,如[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会返回错误:Error: Malformed UTF-8 data

我错过了什么?

修改

尝试@vector建议this model上的loop over each element function

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);

完全相同的结果= 1个元素数组:ok /&gt; 1个元素数组:Error: Malformed UTF-8 data

编辑#2:问题关闭

我刚把我的第一个代码(map)分成了不同的代码:

  • x.toString()
  • CryptoJS.AES.decrypt()
  • toString(CryptoJS.enc.Utf8)

我重新启动了我的服务器:现在一切都很好,从1个元素数组到+10个元素数组。

以防万一,低于我的(重度和迷信......)测试的工作代码:

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);

0 个答案:

没有答案