Как заметил @otus, хэши не являются необработанными MD5 - crypt () использует MD5Crypt, который включает в себя несколько десятков итераций MD5 (точное количество на самом деле отличается в зависимости от самого хэша), некоторое смещение битов и некоторое количество пиксельной пыли.
/* Then just as many characters of the MD5(pw,salt,pw) */
/* On a 60 Mhz Pentium this takes 34 msec */
/* Then something really weird... */
Короче говоря, это не то, что вы можете воспроизвести, используя basic md5sum
, а скорее вызвав функцию libc crypt (3) или используя такие инструменты, mkpasswd
которые делают то же самое:
# echo -n toor | openssl passwd -stdin -1 -salt /M $1$/M$5GK8.h6z8o0WQLEOWC.YI/
Кроме того, и соль, и хэш в выводе crypt () кодируются с использованием слегка модифицированной Base64 (6 бит на байт), в то время md5sum
как хеш печатается в шестнадцатеричном формате (4 бита на байт), так что учитывается разница в выходной длине. ,