如何使用javascript加密和解密Uint8Array?

时间:2013-01-04 07:23:20

标签: javascript arraybuffer cryptojs

我希望加密和解密Uint8Array,因为我已经从link下载了CryptoJS库。

我在虚拟字符串上测试了aes密码算法,它的工作正常。

现在我希望它在Uint8Array上实现它。该数组正在保存视频文件数据。

由于加密和解密对字符串起作用,我必须将其转换为字符串,因为我已经引用了stackoverflow click here上发布的这个问题

加密代码是:

var encrypted = CryptoJS.AES.encrypt(String.fromCharCode.apply(null, uInt8Array), "test");

但是当我运行代码时,错误即将来临:

 Uncaught RangeError: Maximum call stack size exceeded 

我如何让它发挥作用?

1 个答案:

答案 0 :(得分:2)

该错误归因于String.fromCharCode.apply(null, uInt8Array)部分,从不调用CryptoJS。

请注意fromCharCode的完整语法是String.fromCharCode(n1, n2, ..., nX),因此必须将给定缓冲区的所有元素移动到堆栈以便apply函数。

你必须使用一个非常大的缓冲区,你说的视频文件,所以这一定是你遇到stackoverflow错误的原因。

尝试使用`CryptoJS.lib.WordArray',如下所述:

http://groups.google.com/group/crypto-js/browse_thread/thread/4ce6fddad709954d?pli=1