我需要使用大文件(> 2GB)进行一些操作。
我需要加密文件,我不想将> 2GB文件存储在内存中,然后使用Cipher
类对其进行加密。有没有图书馆可以做到这一点?拆分文件什么的?
答案 0 :(得分:0)
您可以在没有与文件一样大的缓冲区的情况下加密任何文件。只需将其读入任意大小的字节数组,调用Cipher.update()
,编写生成的字节数组,重复直到流结束,然后通过调用Cipher.doFinal().
完成或使您的生活更轻松并使用{{复制它1}}和CipherInputStream
。用于这些操作的缓冲区可以是大于零的任何大小,但我建议使用至少8192个字节。
答案 1 :(得分:0)
您可以使用随机字节访问来加密到位。您会发现ByteBuffer
类同时用于random access to files和Cipher
。
对于随机访问文件,如果要保持文件大小相同或者要为它们实现随机访问,则使用CTR模式加密可能很有用。请注意,如果使用CTR模式,必须为每个文件使用不同的IV,除非您不重复使用密钥(例如,通过使用哈希在文件路径上建立IV,如果是不变)。还有其他常用于磁盘和文件加密的加密模式,值得一看。