Wie @otus feststellte, sind die Hashes kein reines MD5 - crypt () verwendet MD5Crypt, das einige Dutzend MD5-Iterationen umfasst (die genaue Menge hängt tatsächlich vom Hash selbst ab), etwas Bitshifting und etwas Pixie-Staub.
/* Then just as many characters of the MD5(pw,salt,pw) */
/* On a 60 Mhz Pentium this takes 34 msec */
/* Then something really weird... */
Kurz gesagt, es ist nicht etwas, das Sie mit basic reproduzieren können md5sum
, sondern indem Sie die libc-Funktion crypt (3) aufrufen oder Tools wie mkpasswd
die verwenden, die dasselbe tun:
# echo -n toor | openssl passwd -stdin -1 -salt /M $1$/M$5GK8.h6z8o0WQLEOWC.YI/
Sowohl der Salt- als auch der Hashwert in der crypt () -Ausgabe werden mit einem leicht modifizierten Base64 (6 Bit pro Byte) codiert, während md5sum
der Hash im Hex-Format (4 Bit pro Byte) ausgegeben wird, so dass der Unterschied in der Ausgabelänge berücksichtigt wird .