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

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

$1$rasmusle$rISCgZzpwk3UhDidwXvin0

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

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

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

3

Решение

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

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

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

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

3

Другие решения

Других решений пока нет …