Это вполне разумный вопрос, несмотря на отрицательные голоса.
Многие режимы шифрования (например, CBC) требуют, чтобы входное значение было кратно размеру блока базового шифра (.eg 16 байтов).для AES или 8 байт для DES).Для достижения этого используется схема заполнения.Возможность шифрования открытого текста с произвольной длиной в битах зависит от используемой схемы заполнения.
Наиболее часто используемая схема заполнения (т. Е. Заполнение PKCS # 5) добавляет в открытый текст n байтов значения n.Это, очевидно, требует, чтобы открытый текст был в байтах.Но есть менее известные схемы заполнения, которые допускают произвольные входные данные.Например, так называемое «заполнение битами» добавляет один 1-бит к вашему тексту и добавляет столько битов, сколько необходимо, до тех пор, пока длина вашего ввода не станет кратной размеру блока вашего шифра.Например, стандарт ISO / IEC 9797-1 предлагает это.
При принятии решения о том, хотите ли вы поддерживать произвольные длины битов в вашем приложении, вы также должны учитывать криптографические библиотеки, которые вы хотите использовать.Хотя некоторые криптоалгоритмы были стандартизированы, чтобы разрешить ввод произвольных размеров в битах, они могут быть не реализованы вашей крипто библиотекой.Например, хеш-функция SHA-1 хорошо определена для входных данных, таких как 4-битная строка '0101', но у вас могут возникнуть проблемы с поиском библиотеки, которая может фактически вычислить этот хеш.