我想得到计算出的MD5字符串的前八个字节。在Ruby中我这样做:
Digest::MD5.digest("foo")[0, 8]
在PHP中执行此操作的最佳方法是什么?
编辑:我不希望它作为substr()
返回的字符串。我想调用md5("foo", true)
,其中true参数允许返回二进制。我想将16个字节切换为8个字节。
答案 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)
使用md5
和substr
:substr(md5("foo"), 0, 8)
答案 3 :(得分:0)
最简单的方法是:
printf(substr(md5('foo'),0,8));