获取MD5字符串的前八个字节

时间:2011-07-04 15:07:04

标签: php

我想得到计算出的MD5字符串的前八个字节。在Ruby中我这样做:

Digest::MD5.digest("foo")[0, 8]

在PHP中执行此操作的最佳方法是什么?

编辑:我不希望它作为substr()返回的字符串。我想调用md5("foo", true),其中true参数允许返回二进制。我想将16个字节切换为8个字节。

4 个答案:

答案 0 :(得分:5)

如果我没记错的话,使用md5()hex2bin()可以做你想做的事:

substr(hex2bin(md5("foo")), 0, 8);

编辑:

如果未定义hex2bin()函数,您可以使用此函数自己实现它(来自here):

function hex2bin($hexdata) { 
  $bindata=""; 

  for ($i=0;$i<strlen($hexdata);$i+=2) { 
    $bindata.=chr(hexdec(substr($hexdata,$i,2))); 
  } 

  return $bindata; 
}

答案 1 :(得分:3)

使用substr

substr(md5("foo"),0,8);

答案 2 :(得分:0)

使用md5substrsubstr(md5("foo"), 0, 8)

答案 3 :(得分:0)

最简单的方法是:

printf(substr(md5('foo'),0,8));