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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

Просто убедитесь, что вы не используете ключ более одного раза.

Ответ 3

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