【问题标题】:How do i encrypt and decrypt Uint8Array using javascript?如何使用 javascript 加密和解密 Uint8Array?
【发布时间】:2013-01-04 07:23:20
【问题描述】:

我想要一个 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 

如何让它工作?

【问题讨论】:

    标签: javascript arraybuffer cryptojs


    【解决方案1】:

    该错误是由于 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

    【讨论】:

    • 感谢胡安回复。是的,这个缓冲区包含视频文件数据(v11.webm 10.5 MB)。如何应用加密/解密?
    • @PankajKhurana 我不是 CryptoJS 用户,只是为您指明了正确的方向。无论如何,快速浏览一下库文档会发现“密码算法接受 CryptoJS.lib.WordArray 的字符串或实例”。我想你可以从那里跟随,我会这样做。
    • 我看了看,但找不到任何相关信息。你能给我推荐一些其他可以完成工作的图书馆吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 2015-02-24
    • 2011-08-09
    • 2013-05-12
    • 2014-07-12
    • 1970-01-01
    相关资源
    最近更新 更多