PHP crypt() - 返回md5哈希

时间:2015-05-12 17:46:26

标签: php md5 crypt

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

$1$rasmusle$rISCgZzpwk3UhDidwXvin0

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

但是字符串的其余部分如何是MD5哈希?通常它应该是一个32字符串(0-9,a-f),对吗?

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

1 个答案:

答案 0 :(得分:3)

  

通常它应该是32个字符串(0-9,a-f),对吧?

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

    {十六进制(基数为16)表示中的
  1. md5("test")098f6bcd4621d373cade4e832627b4f6
  2. 基础64 表示中的
  3. md5("test")CY9rzUYh03PK3k6DJie09g==
  4. md5("test") 十进制(基数10)表示:12707736894140473154801792860916528374
  5. 基础27 表示中
  6. md5("test")(从未使用过,只因为我可以并证明我的观点):ko21h9o9h8bc1hgmao4e69bn6f
  7. 所有这些字符串代表相同的数值,只是在不同的基础上。