crypt()函数的文档(http://php.net/manual/de/function.crypt.php)展示了MD5哈希的以下示例:
$1$rasmusle$rISCgZzpwk3UhDidwXvin0
我知道"$1$"是前缀,包含了哈希为MD5哈希的信息。
但是其余的字符串如何成为MD5哈希呢?通常应该是一个32个字符的字符串(0-9, a-f),对吧?
我知道这可能是个愚蠢的问题,但我还是想问一下。
crypt()函数的文档(http://php.net/manual/de/function.crypt.php)展示了MD5哈希的以下示例:
$1$rasmusle$rISCgZzpwk3UhDidwXvin0
我知道"$1$"是前缀,包含了哈希为MD5哈希的信息。
但是其余的字符串如何成为MD5哈希呢?通常应该是一个32个字符的字符串(0-9, a-f),对吧?
我知道这可能是个愚蠢的问题,但我还是想问一下。
md5("test")
的十六进制表示法(基数为16):098f6bcd4621d373cade4e832627b4f6
md5("test")
的base 64表示法:CY9rzUYh03PK3k6DJie09g==
md5("test")
的十进制表示法(基数为10):12707736894140473154801792860916528374
md5("test")
的base 27表示法(很少使用,只是为了证明我的观点):ko21h9o9h8bc1hgmao4e69bn6f
$ID$SALT$HASH
。你应该使用password_hash()
,而不是MD5。 - Sammitchpassword_hash()
比crypt()
更好,但它在 PHP 5.5 之前是不可用的。例如,我仍会使用 PHP 5.3 或 5.4 更新多个网站,并且我一定想在那里使用password_hash()
。 - PurkkaKoodaripassword_hash()
的同一人编写的,甚至在文档页面中有链接。 - Sammitch