2

我想要一个 Uint8Array 的加密和解密,因为我已经从这个链接下载了 CryptoJS 库。

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

现在我希望它在 Uint8Array 上实现它。这个数组保存了一个视频文件数据。

由于加密和解密适用于字符串,因此我必须将其转换为字符串,因为我已经引用了在 stackoverflow 上发布的这个问题,请单击此处

加密代码是:

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

但是当我运行代码时,出现以下错误:

 Uncaught RangeError: Maximum call stack size exceeded 

我如何使它工作?

4

1 回答 1

2

该错误是由于String.fromCharCode.apply(null, uInt8Array)部分原因,从未调用过 CryptoJS。

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

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

尝试改用“CryptoJS.lib.WordArray”,如下所述:

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

于 2013-01-04T08:04:45.040 回答