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

Len*_*ann 1 php

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

Digest::MD5.digest("foo")[0, 8]
Run Code Online (Sandbox Code Playgroud)

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

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

Frx*_*rem 5

如果我没记错的话,使用md5()并且hex2bin()应该做你想做的事:

substr(hex2bin(md5("foo")), 0, 8);
Run Code Online (Sandbox Code Playgroud)

编辑:

如果hex2bin()未定义该功能,您可以使用此功能自行实现(从此处):

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

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

  return $bindata; 
}
Run Code Online (Sandbox Code Playgroud)