crypt()函数的文档(http://php.net/manual/de/function.crypt.php)显示了MD5哈希的以下示例:
$1$rasmusle$rISCgZzpwk3UhDidwXvin0
据我所知,“$ 1 $”是前缀,其中包含哈希是MD5哈希的信息。
但是字符串的其余部分如何是MD5哈希?通常它应该是一个32字符串(0-9,a-f),对吗?
我确定,这是一个愚蠢的问题,但我仍然想问。
答案 0 :(得分:3)
通常它应该是32个字符串(0-9,a-f),对吧?
不正确(至少严格来说)。从技术上讲,MD5哈希值是 128位数值。您习惯使用的表单只是该数字的十六进制表示。通常选择它是因为它们易于交换作为字符串(128位整数难以处理。毕竟,典型的整数变量通常只保留64位)。请考虑以下示例:
md5("test")
:098f6bcd4621d373cade4e832627b4f6
md5("test")
:CY9rzUYh03PK3k6DJie09g==
md5("test")
十进制(基数10)表示:12707736894140473154801792860916528374
md5("test")
(从未使用过,只因为我可以并证明我的观点):ko21h9o9h8bc1hgmao4e69bn6f
所有这些字符串代表相同的数值,只是在不同的基础上。