Как уменьшить длину хеш-значения? - PullRequest
2 голосов
/ 07 ноября 2010

Я бы хотел сжать или сжать значение хэша результата из MD5 или SHA1 в приложении на стороне сервера, чтобы клиент мог распаковать его или сжать, возможно ли это?Это проблема с юзабилити для моего приложения.

Ответы [ 2 ]

4 голосов
/ 07 ноября 2010

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

Если вы хотите облегчить чтение значений хеш-функции для пользователей, вы можете использовать различные приемы, например:

  • Отображение меньшего количества цифр. Вместо 32 цифр просто показать 16.

  • Использование другой базы. Например, если вы использовали базу 62, используя все прописные и строчные буквы плюс цифры 0-9 в качестве цифр, то вы могли бы показать 128-битный хеш, используя 22 буквы + цифры против 32 шестнадцатеричных цифр:

    log 62 (2 128 ) и ок. 21,5

  • Добавление пробелов или знаков препинания. Обычно вы видите клавиши CD, напечатанные тире, например, AX7T4-BZ41O-JK3FF-QOZ96. Пользователям легче прочесть это, чем 20 цифр, все вместе.

1 голос
/ 07 ноября 2010

Значения хеша довольно короткие; Попытка сжатия этих (довольно случайных и сильно различающихся) значений трудна и неэффективна. Если вы хотите сэкономить место, усечение значения может помочь, но имейте в виду, что если вы сделаете это, вы увеличите пространство столкновений (и уменьшите пространство клавиш).

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