使用AES / CBC / PKCS5padding加密大文件(2GB)

时间:2019-03-18 14:55:03

标签: java encryption aes

我有一个大约2GB的非常大的文件,如果我一次读取它太大而我的JVM抛出了OutOfMemory错误,我想通过切成块对它进行加密。我正在使用 AES / CBC / PKCS5padding。您能推荐我一种方法吗?我读过有关CipherStreams的信息,但不确定它们是否可以工作。提前致谢! 我现在正在使用此策略,但不适用于较大的文件。

  try (FileInputStream input = new FileInputStream(in);
                 FileOutputStream output = new FileOutputStream(out)) {
                byte[] encoded = cipher.doFinal(ByteStreams.toByteArray(input));
                output.write(encoded);
            }

1 个答案:

答案 0 :(得分:1)

创建一个CipherOutputStream包装您的FileOuputStream

使用Files.copy()将文件复制到此CipherOutputStream

完成。 阅读Javadoc了解详细信息。