2010-11-24 4 views
5

У меня есть 15-значная строка для шифрования.Сделать зашифрованную строку той же длины, что и входная строка?

Я попытался использовать различные функции шифрования .NET, но все мои зашифрованные строки имеют длину не менее 24, 28 или 32.

Я слышал о CipherMode.CTS с Padding = None, который производит такой же вывод длины, как и длина ввода, но я не могу получить тот же результат. Я играл с размером блока, размером с ключом и размером соли.

Я не возражаю добавить цифру в свою строку ввода, чтобы сделать ее 16 длиной.

Кто-нибудь знает обходное решение?

+1

а как о rot13? ;) – 2010-11-24 05:45:12

ответ

3

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

Практически любой другой режим включает/использует вектор инициализации (IV), который делает выход на один блок больше, чем вход (опять же, после того, как вход был округлен до следующего кратного размера блока).

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

2

Кодовое слово Format-preserving encryption. К сожалению, я не знаю каких-либо .NET-реализаций (рамки, конечно, нет).

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