使用AES加密大文件

时间:2014-10-23 23:05:09

标签: java memory encryption aes

我需要使用大文件(> 2GB)进行一些操作。

我需要加密文件,我不想将> 2GB文件存储在内存中,然后使用Cipher类对其进行加密。有没有图书馆可以做到这一点?拆分文件什么的?

2 个答案:

答案 0 :(得分:0)

您可以在没有与文件一样大的缓冲区的情况下加密任何文件。只需将其读入任意大小的字节数组,调用Cipher.update(),编写生成的字节数组,重复直到流结束,然后通过调用Cipher.doFinal().完成或使您的生活更轻松并使用{{复制它1}}和CipherInputStream。用于这些操作的缓冲区可以是大于零的任何大小,但我建议使用至少8192个字节。

答案 1 :(得分:0)

您可以使用随机字节访问来加密到位。您会发现ByteBuffer类同时用于random access to filesCipher

对于随机访问文件,如果要保持文件大小相同或者要为它们实现随机访问,则使用CTR模式加密可能很有用。请注意,如果使用CTR模式,必须为每个文件使用不同的IV,除非您不重复使用密钥(例如,通过使用哈希在文件路径上建立IV,如果是不变)。还有其他常用于磁盘和文件加密的加密模式,值得一看。

相关问题