Хэш-функция для получения кода из 30 символов? - PullRequest
3 голосов
/ 21 августа 2010

Мне нужно хешировать сообщение в строку из 30 символов. Какая самая лучшая и наиболее безопасная хеш-функция для этого использования?

Ответы [ 2 ]

8 голосов
/ 21 августа 2010

Тридцать символов (байтов) составляют 240 бит.

Если вы не можете переместить стойку ворот, чтобы разрешить 32 символа, то вы, вероятно, в конечном итоге будете использовать SHA-1, который генерирует 160-бит или20 байтов.Когда кодируется Base-64, это будет 28 символов.Если вы используете шестнадцатеричное кодирование, это будет 40 символов, что номинально выходит за пределы допустимого диапазона.Используя 32 символа, вы можете использовать SHA-256, но кодировка Base-64 увеличит этот размер (до 44 символов), а шестнадцатеричное кодирование увеличит размер до 64 символов.

Если необходимо использовать шестнадцатеричное кодирование иможет идти до 32 байт, тогда можно использовать MD5 - который генерирует 128 битов, хотя это не рекомендуется для любых новых систем.В кодировке Base-64 MD5 использует 24 символа.В противном случае вы используете минимально безопасные алгоритмы - совсем не рекомендуется.

6 голосов
/ 21 августа 2010

Просто используйте SHA1 и обрежьте до 30 символов.

import hashlib
hash = hashlib.sha1("your message").hexdigest()[:30]

Было доказано, что вырезание символов из криптографически защищенной хеш-функции, такой как SHA1, оказывает незначительное влияние на ее безопасность (хотя сейчас не могу найти ссылку)

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