Длина зашифрованной строки - PullRequest
14 голосов
/ 19 января 2009

Мне нужно создать столбец базы данных, в котором будет храниться строка, зашифрованная с использованием Triple DES. Как определить длину столбца зашифрованной строки?

(Ответы на алгоритмы, отличные от Triple DES, также приветствуются.)

Ответы [ 3 ]

22 голосов
/ 21 января 2009

Блочные шифры, такие как DES, 3DES и AES, могут работать только с байтовыми блоками. DES и 3DES работают с блоком из 8 байтов, а AES с блоком из 16 байтов.

Чтобы справиться с этим, вы обычно применяете обратимое заполнение к своему тексту перед его шифрованием. В большинстве случаев это всегда будет заполнение "PKCS" (также называемое дополнением PKCS5 или PKCS7).

PKCS-заполнение добавляет, по крайней мере, один байт, так что дополненный текст имеет длину, кратную длине блока (8 байтов для 3DES). Значение байтов заполнения - это количество добавленных байтов. Fx. ABCDEF дополняется до ABCDEF0505050505, а 0011223344556677 дополняется до 0011223344566770808080808080808. Обратите внимание, что это легко удалить: вы просто смотрите на последний байт дополненных байтов, убедитесь, что он находится между 1 и длиной блока, и удалите это количество байтов с конца (проверка того, что каждый удаленный байт имеет правильное значение).

Наконец, чтобы ответить на ваш вопрос: при условии, что вы используете 3DES с шифрованием CBC и дополнением PKCS - что вы, вероятно, - шифрование строки длины n будет иметь длину:

n + 8 - (n % 8)
4 голосов
/ 19 января 2009

Использование Triple DES не меняет длину строки, но она будет округлена до следующей 64-битной границы. Если вы намереваетесь «отобразить» его, вам придется его закодировать (как в Base64 , хотя.

Что касается других алгоритмов, трудно ответить, так как их много. Блочные шифры всегда будут дополнять ввод, чтобы соответствовать размеру их блока, тогда как многие потоковые шифры не будут.

1 голос
/ 19 января 2009

Triple DES использует три 56-битных ключа DES, что дает 168-битные ключи. Размер блока 64-бит .

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