Шифрование больших файлов (2 ГБ) с помощью AES / CBC / PKCS5padding - PullRequest
0 голосов
/ 18 марта 2019

У меня очень большой файл размером около 2 ГБ, и я хочу зашифровать его, разрезав его на куски, если я прочитал его слишком много, и моя 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 Ответ

1 голос
/ 18 марта 2019

Создайте CipherOutputStream упаковку FileOuputStream.

Используйте Files.copy(), чтобы скопировать файл в этот CipherOutputStream.

Готово.Прочитайте Javadoc для деталей.

...