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-разрядные). Рассмотрим следующие примеры:
md5("test")
в шестнадцатеричном (основание 16) представлении:098f6bcd4621d373cade4e832627b4f6
md5("test")
в базовом представлении 64:CY9rzUYh03PK3k6DJie09g==
md5("test")
в десятичном (основание 10) представлении:12707736894140473154801792860916528374
md5("test")
в представлении базы 27 (никогда не использовал, только потому, что я могу и доказать свою точку зрения):ko21h9o9h8bc1hgmao4e69bn6f
Все эти строки представляют одно и то же числовое значение, только в разных базах.