Какой алгоритм шифрования лучше всего подходит для небольших строк? - PullRequest
18 голосов
/ 16 июня 2010

У меня есть строка из 10-15 символов, и я хочу зашифровать эту строку.Проблема в том, что я хочу получить максимально короткую зашифрованную строку.Я также хочу расшифровать эту строку обратно в исходную строку.

Какой алгоритм шифрования лучше всего подходит для этой ситуации?

Ответы [ 3 ]

9 голосов
/ 16 июня 2010

AES использует 16-байтовый размер блока; это превосходно подходит для ваших нужд, если ваш предел в 10-15 символов тверд. Схема заполнения PKCS # 11 (IIRC) добавила бы 6-1 байт к данным и сгенерировала бы вывод ровно 16 байт. Вам на самом деле не нужно использовать режим шифрования (например, CBC), поскольку вы шифруете только один блок. Существует проблема того, как вы будете обращаться с ключами - всегда есть проблема того, как вы обрабатываете ключи шифрования.

Если вам нужно использовать более короткие длины данных для более коротких строк, то вам, вероятно, нужно учитывать AES в режиме CTR. При этом используются ключ и счетчик для генерации потока байтов, который выполняется XOR с байтами строки. Это оставило бы вашу зашифрованную строку на той же длине, что и входная строка открытого текста.

Вам будет сложно найти алгоритм сжатия общего назначения, который надежно сокращает длину таких коротких строк, поэтому сжатие перед шифрованием едва ли возможно.

5 голосов
/ 16 июня 2010

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

http://en.wikipedia.org/wiki/One-time_pad

Только убедитесь, что вы не используете клавишучем один раз.

1 голос
/ 16 июня 2010

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

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