Ответ 1
Блоковые шифры, такие как DES, 3DES и AES, могут работать только на блоках байтов. DES и 3DES работают на блоке из 8 байтов и AES на блоках по 16 байт.
Чтобы справиться с этим, вы обычно применяете обратимое дополнение к вашему открытому тексту перед его шифрованием. Обычно это будет "PKCS" -партинг (также называемый PKCS5- или PKCS7-padding).
PKCS-padding добавляет по меньшей мере один байт, так что заполненный текст имеет длину, делящуюся с длиной блока (8 байтов для 3DES). Значение padding-bytes - это количество добавленных байтов. Fx. ABCDEF дополняется ABCDEF0505050505 и 0011223344556677, дополняется 0011223344566770808080808080808. Обратите внимание, что это легко удалить: вы просто посмотрите на последний байт заполненных байтов, убедитесь, что он находится между 1 и длиной блока и удалите это количество байтов от конца (проверка того, что каждый удаленный байт имеет правильное значение).
Наконец, чтобы ответить на ваш вопрос: предположив, что вы используете 3DES с CBC-шифрованием и PKCS-padding, что вы, вероятно, знаете, - шифрование строки длины n будет иметь длину:
n + 8 - (n % 8)