2013-04-11 2 views
2

Я несколько раз избивал голову над проблемой за последние несколько дней: после того, как вы открыли открытый ключ +, мои конечные точки переключаются на симметричную схему шифрования для шифрования сообщений между клиентом и сервером.Сколько накладных расходов на восстановление CryptoStream?

Проблема заключается в том, что я создаю криптопоток и оставляю его открытым, думая, что это лучший способ, так как канал будет использоваться для отправки нескольких соединений. Когда я это делаю, шифрование никогда полностью не выводится в базовый поток. За MSDN, он говорит:

Вы всегда должны явно закрыть объект CryptoStream после выполнены с использованием его с помощью вызова метода Close. Это приводит к сбросу потока и приводит к тому, что все оставшиеся блоки данных обрабатываются объектом CryptoStream.

Это похоже на много накладных расходов, чтобы перестроить его для каждого отправленного сообщения. Есть ли какая-то причина для этого, или я просто что-то пропустил?

+0

Будьте осторожны: при создании более сложных протоколов от AES, подобных этому; очень легко сделать тонкие ошибки, которые полностью нарушают шифрование. Пожалуйста, используйте существующий протокол (TLS) вместо того, чтобы загружать собственную криптосистему. – Daniel

+0

Я думал, используя Rijndael WAS, используя существующую криптосистему? – sircodesalot

+0

Нет, это всего лишь алгоритм шифрования. И это довольно сложно использовать правильно - даже обычно используемые протоколы SSL/TLS были изначально повреждены из-за неправильного использования AES (атака BEAST и т. Д.) И должны были быть обновлены. – Daniel

ответ

2

AES (Rijndael) использует блоки фиксированного размера, поэтому выход может быть кратным размеру блока. Если вход не согласован с размером блока, он дополняется. При расшифровке это дополнение удаляется. Чтобы знать, сколько дополнений добавить, AES должен знать точную длину потока. И эта длина может быть определена, когда поток заканчивается (после его закрытия).

+0

О, так закрытие говорит, насколько велика величина потока? – sircodesalot

+0

@sircodesalot, да. Я добавил это к ответу. – alex

Смежные вопросы