Get first eight bytes of a MD5 string
I want to get the first eight bytes of a calculated MD5 string. In Ruby I do this:
Digest::MD5.digest("foo")[0, 8]
What is the best way to do this in PHP?
EDIT: I don't want it as a String, which substr()
returns. I thought of calling md5("foo", true)
, where the true parameter enables returning binary. I want to cut the 16 bytes to 8 bytes.开发者_如何学Python
If I remember correctly, using md5()
and hex2bin()
should do what you want:
substr(hex2bin(md5("foo")), 0, 8);
EDIT:
If the hex2bin()
function is not defined, you can alternatively implement it yourself using this function (from here):
function hex2bin($hexdata) {
$bindata="";
for ($i=0;$i<strlen($hexdata);$i+=2) {
$bindata.=chr(hexdec(substr($hexdata,$i,2)));
}
return $bindata;
}
Use substr.
substr(md5("foo"),0,8);
Use md5
and substr
: substr(md5("foo"), 0, 8)
The easiest way is to do:
printf(substr(md5('foo'),0,8));
精彩评论