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