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

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

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

18
задан Jonathan Leffler 2 October 2015 в 00:52
поделиться

3 ответа

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

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

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

10
ответ дан 30 November 2019 в 09:14
поделиться

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

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

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

5
ответ дан 30 November 2019 в 09:14
поделиться

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

1
ответ дан 30 November 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: