Может ли хеш SHA-1 быть чисто числовым? - PullRequest
5 голосов
/ 27 июня 2009

Есть ли вероятность, что хеш SHA-1 может быть чисто числовым, или алгоритм гарантирует, что должен быть хотя бы один алфавитный символ?

Редактировать: Я представляю его в базе 16 как строку, возвращаемую PHP-функцией sha1 ().

Ответы [ 3 ]

17 голосов
/ 27 июня 2009

С технической точки зрения хеш SHA1 - это число, просто он чаще всего кодируется в базе 16 (что делает PHP sha1 ()), так что в нем почти всегда есть буква. Хотя это не гарантируется.

Шансы шестнадцатеричного кодированного 160-битного числа без цифр A-F составляют (10/16) 40 или примерно 6,84227766 × 10 -9

3 голосов
/ 27 июня 2009

Хеш SHA-1 - это 160-битное число. Для простоты написания он обычно пишется в шестнадцатеричном формате. Шестнадцатеричные (основание 16) цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e и f. В письмах нет ничего особенного. Каждый шестнадцатеричный символ, эквивалентный 4 битам, что означает, что хэш может быть записан в 40 символах.

Я не верю, что есть какая-то причина, по которой в хэше SHA-1 не может быть букв, но это маловероятно. Это все равно, что генерировать 40-значное (основание 10) случайное число и не получать 7, 8 или 9 с.

1 голос
/ 27 июня 2009

Вы можете представить вывод SHA1 (как и любые двоичные данные) в любой базе, которую вы хотите. В частности, вы можете закодировать результат в base-8 / 10.

...