我的要求要求我使用AES加密文件并通过HTTP发送。在服务器上,我正在将文件内容读入byte [],使用AES / CBC / PKCS5Padding对其进行加密,然后执行base 64编码和消费者(移动设备应用程序)检索这个加密和编码的数据并进行解码然后解密,并将普通数据写入固定格式的文件。这对于小文件都可以正常工作。但是我我觉得这是一种天真的做法。我可以看到这导致服务器以及设备的高内存消耗,甚至当我考虑文件大小> 100MB时导致应用程序崩溃。请告诉我如何继续。我搜索到了有点,虽然我找到了加密的方法,但它们似乎都没有效率。 如果需要,请告诉我,我会发布我的代码和其他任何其他信息。谢谢。
答案 0 :(得分:2)
如果您只需要运输安全性,那么您应该选择TLS。如果您坚持使用此协议或者您需要应用程序级安全性(存储在服务器上),那么您应该使用流,如user1516873所示。请注意,HTTP可以处理二进制数据,因此不需要base 64编码。如果你确实需要base 64,那么使用编码/解码流也是有益的。 Guava似乎为base64编码实现了一个很好的接口,包括stream support。
请注意,通过不受信任的网络发送加密数据并不能保护您免受更改。如果 padding oracles 适用,那么您甚至可能不提供机密性,这是首先使用加密的全部想法。