如何加密ReadableStream

时间:2019-02-03 10:52:32

标签: javascript security cryptography aes webcryptoapi

我正在寻找一种在将浏览器的客户端上的任意大文件发送到Web服务器之前对其进行加密的方法。理想的情况下,我想在AES-256-CBC加密和以与OpenSSL的格式兼容。

使用Stream API,我现在能够逐块读取文件,进行处理并将其通过管道传输到XHR POST请求主体中,这很棒。

我现在需要一种使用AES对其进行加密的方法。不幸的是,WebCrypto API目前不兼容ReadableStreams。

https://github.com/w3c/webcrypto/issues/73

同时,最好的选择是什么?

1 个答案:

答案 0 :(得分:0)

不幸的是,出于安全原因,我们不太可能在WebCrypto实现中看到流支持。出于某些原因,请参见Encrypting streams

您还应该避免JS和WebASM加密实施,因为它们不太可能提供适当的安全保证。由于某些原因,请参见Why JS Crypto is Considered Harmful并查看Mitigating Side-Channel Attacks

您将需要最终实现自己的分块并为您的案例使用WebCrypto。