Эффективное шифрование больших потоков (> 1 ТБ) - PullRequest
0 голосов
/ 02 октября 2018

Шифрование больших потоков для отправки через Amazon S3

Я пытаюсь решить ту же проблему и наткнулся на определенную проблему: поток зависает в конце, когда> 4 ГБфайлы вступают в игру.Кроме того, конвейерные потоки могут быть очень медленными.

Я думал о замене их буферизованными потоками, но я принимаю только InputStream в качестве параметра и возвращаю зашифрованный InputStream.Буферизованные потоки требуют базовых потоков (а мне не хватает OutputStream).Таким образом, потоковые потоки будут хорошим выбором здесь - если не по причинам, указанным выше.

Кроме того, является ли хорошей идеей запуск этого потока вручную?А как насчет использования ExecutorService?

1 Ответ

0 голосов
/ 02 октября 2018

Это мое личное мнение о вашем дизайне в упомянутой теме .Как вы уже упоминали, вы шифруете поток , поэтому я считаю, что ваш метод шифрования не подходит.

В вышеупомянутой теме вы используете режим CBC, который никоим образом не подходит для потокового шифрования.Если то, что вы отправляете, действительно потоковое, я предлагаю использовать режимы потокового шифрования, такие как CTR или алгоритмы потокового шифрования (даже если рекомендуется первый).

Если вы используете потоковые режимы, вы можете зашифровать / расшифроватькаждая часть контента самостоятельно на лету.Таким образом, вы можете даже разделить ваш контент и отправить его на несколько частей, а не на один большой файл.Кроме того, в режимах потоков размер зашифрованного текста равен размеру обычного текста, поэтому вы будете знать размер результата до шифрования.

Относительно зависающих потоков , я думаю, это может быть из-заалгоритм шифрования тоже.Если вы используете шифр AES/CBC/NoPadding, который вы опубликовали в своей ветке, вы можете зашифровать только те данные, размер которых кратен AES размеру блока (16 байт).Это происходит потому, что вы используете режим блочного шифра без какого-либо механизма заполнения.Я предполагаю, что ваше шифрование должно зависать всякий раз, когда размер ваших простых данных (потока) не кратен 16 байтам, а не всякий раз, когда размер данных очень велик.Если это действительно ваша проблема, переход в режим потокового шифра также должен решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...