PHP crypt() - 返回的 md5 哈希

PHP crypt() - Returned md5 hash

crypt() 函数的文档 (http://php.net/manual/de/function.crypt.php) 显示了以下 MD5 哈希示例:

$rasmusle$rISCgZzpwk3UhDidwXvin0

我明白,“$1$”是前缀,其中包含哈希是 MD5 哈希的信息。

但是字符串的其余部分如何成为 MD5 哈希值?正常应该是32个字符的字符串(0-9, a-f)吧?

我确定,这是一个愚蠢的问题,但我还是想问一下。

Normally it should be a 32 char string (0-9, a-f), right?

那是不正确的(至少严格来说是这样)。从技术上讲,MD5 哈希是 128 位数值。您习惯的形式只是该数字的十六进制表示。通常选择它是因为它们 易于交换 作为字符串(128 位整数很难处理。毕竟,典型的整数变量通常只包含 64 位)。考虑以下示例:

  1. md5("test") 十六进制(基数 16)表示:098f6bcd4621d373cade4e832627b4f6
  2. md5("test")base 64 表示:CY9rzUYh03PK3k6DJie09g==
  3. md5("test") 十进制 (基数 10)表示:12707736894140473154801792860916528374
  4. md5("test")base 27 表示(从未使用过,只是因为我可以证明我的观点):ko21h9o9h8bc1hgmao4e69bn6f

所有这些字符串都表示相同的数值,只是基数不同。