2013-01-04 34 views
0

我想对Uint8Array进行加密和解密,因为我已经从此link下载了CryptoJS库。我如何使用JavaScript加密和解密Uint8Array?

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

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

由于上一个字符串的加密和解密工作,我必须把它转换为一个字符串,我已经提到这个问题贴在计算器click here

代码加密:

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

但是当我运行代码以下错误即将到来:

Uncaught RangeError: Maximum call stack size exceeded 

我如何使它工作?

回答

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

+0

感谢胡安的回答。这个缓冲区包含视频文件数据(v11.webm 10.5 MB)。我怎样才能应用加密/解密? –

+0

@PankajKhurana我不是CryptoJS的用户,只是指出你在正确的方向。无论如何,快速浏览一下库文档可以发现_“密码算法接受字符串或CryptoJS.lib.WordArray实例”_。我想你可以从那里跟进,我会这样做。 –

+0

我看了一下,但找不到任何相关信息。你能否建议我可以完成这项工作的其他图书馆? –