Заполнение текстовых блоков в TwoFish - PullRequest
2 голосов
/ 13 ноября 2011

При использовании шифрования с TwoFish неизбежно, что в тот или иной момент вы столкнетесь с ситуацией, когда последний текстовый блок меньше 128 бит. Как происходит заполнение в этом случае? Например, скажем, последний блок составляет всего 112 бит (14 байтов). Вы бы просто заполнили байт 15 случайными битами и использовали бы 16-й байт, чтобы сказать, сколько заполнения содержится в блоке? В этом случае последний байт может содержать 00010000, чтобы указать, что 16 бит блока заполнены.

1 Ответ

2 голосов
/ 13 ноября 2011

Существует несколько различных механизмов заполнения , которые широко используются сегодня; какой из них выбран, в основном зависит от того, как разработчик протокола выбрал его и сказал, что это стандарт для этого протокола. (Я не знаю каких-либо веских причин выбирать одну над другими.)

Самый распространенный из известных мне и работающий над разрешением суббайтового (битового) заполнения - это добавление одного 1 бита, за которым следует столько 0 битов, необходимых для завершения блока.

Следующим наиболее распространенным из известных мне является заполнение нулями или случайными данными и использование последнего байта в блоке для указания количества байтов, использованных для заполнения.

Вы также можете использовать в качестве значения байта любое количество байтов, которое необходимо использовать для заполнения; pad с 0x01, если вам нужно добавить один байт, 0x04 0x04 0x04 0x04, если вам нужно заполнить четыре байта и т. д.

Одна маленькая хитрость, которая может вас догнать, заключается в том, что вам почти всегда нужно добавлять блок заполнения - даже если весь блок заполнен - ​​просто для того, чтобы у вас было обратимое преобразование. Если вы не добавите блок заполнения, когда сообщение кратно размеру блока, вы можете попытаться удалить допустимое содержимое сообщения в качестве заполнения. Вы можете либо сигнализировать об отсутствии заполнения через какой-либо другой механизм, либо вы всегда можете добавить заполнение. (Что часто проще.)

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