其他人说,有充分的理由以不同的方式做到这一点。
但是,如果您要做的是将md5哈希转换为十进制数字字符串(我认为您真正指的是“用整数表示”,因为md5已经是字符串形式的整数),并将其转换回相同的md5字符串:
function md5_hex_to_dec($hex_str)
{
$arr = str_split($hex_str, 4);
foreach ($arr as $grp) {
$dec[] = str_pad(hexdec($grp), 5, '0', STR_PAD_LEFT);
}
return implode('', $dec);
}
function md5_dec_to_hex($dec_str)
{
$arr = str_split($dec_str, 5);
foreach ($arr as $grp) {
$hex[] = str_pad(dechex($grp), 4, '0', STR_PAD_LEFT);
}
return implode('', $hex);
}
演示:
$md5 = md5('example@example.com');
echo $md5 . '<br />'; // 23463b99b62a72f26ed677cc556c44e8
$dec = md5_hex_to_dec($md5);
echo $dec . '<br />'; // 0903015257466342942628374306682186817640
$hex = md5_dec_to_hex($dec);
echo $hex; // 23463b99b62a72f26ed677cc556c44e8
当然,使用任一字符串都必须小心,例如确保仅将它们用作字符串类型以避免丢失前导零,确保字符串的长度正确等。