PHP crypt() - вернул хеш md5

Документы ( http://php.net/manual/de/function.crypt.php) для функции crypt() показывают следующий пример для хеша MD5:

$1$rasmusle$rISCgZzpwk3UhDidwXvin0

Я понимаю, что "$1$" - это префикс, который содержит информацию о том, что хеш - это хеш MD5.

Но как остальная часть строки является хешем MD5? Обычно это должна быть строка из 32 символов (0-9, af), верно?

Я уверен, что это глупый вопрос, но я все еще хочу спросить.

1 ответ

Решение

Обычно это должна быть строка из 32 символов (0-9, af), верно?

Это не правильно (по крайней мере, строго говоря). Технически, хэш MD5 является 128-битным числовым значением. Форма, к которой вы привыкли, представляет собой просто шестнадцатеричное представление этого числа. Его часто выбирают потому, что их легко обменивать как строки (128-разрядные целые числа трудно обрабатывать. В конце концов, типичная целочисленная переменная обычно содержит только 64-разрядные). Рассмотрим следующие примеры:

  1. md5("test") в шестнадцатеричном (основание 16) представлении: 098f6bcd4621d373cade4e832627b4f6
  2. md5("test") в базовом представлении 64: CY9rzUYh03PK3k6DJie09g==
  3. md5("test") в десятичном (основание 10) представлении: 12707736894140473154801792860916528374
  4. md5("test") в представлении базы 27 (никогда не использовал, только потому, что я могу и доказать свою точку зрения): ko21h9o9h8bc1hgmao4e69bn6f

Все эти строки представляют одно и то же числовое значение, только в разных базах.

Другие вопросы по тегам