使用 CryptoJS 解密二进制字符串并写入文件

Decrypt binary string with CryptoJS and write to file

过去一天我一直在用头撞墙,我正在尝试解密一个二进制字符串,然后使用 CryptoJS 写入它。我让它工作,但让我头疼的是它的性能。我目前正在使用一些肮脏的解决方法来做到这一点,但我很确定有一种更快、更有效的方法。

convertWordArrayToUint8Array(CryptoJS.AES.decrypt(base64ArrayBuffer(res), key))

//"key" is a 32 character string (passphrase)
//"res" is a binary string converted to an ArrayBuffer

我目前的尝试是使用 XMLHttpRequest 将二进制字符串作为 ArrayBuffer 获取,然后将其转换为 Base64 字符串,然后使用 CryptoJS 对其进行解密。解密后,我将结果转换为 Uint8 数组并将其写入文件。它有效,但速度很慢。在 Chrome 中解密一个 1 MB 的块大约需要 200 毫秒,在 Firefox 中大约需要 100 毫秒。

感谢任何帮助!

出于好奇 - 为什么 CryptoJS 我不太了解它,但是浏览器中很容易提供您可能需要的许多加密功能: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/decrypt

如果可以使用本机 API,我猜它会比 JavaScript 实现快一点。