哈希函数返回非十六进制值


hash function return not hexa value

我只是在尝试对哈希函数和它们的速度进行一些基准测试,在一个案例中我遇到了奇怪的问题。代码很简单,我从随机数中创建哈希,然后从随机中创建另一个哈希,然后我将它与一些服务器和本地值放在一起,并采取多少执行时间。

我知道这是一段疯狂的代码,但它只是用于基准测试,问题是出于我的好奇心:

代码:

$salt1 = hash( 'sha1', uniqid( mt_rand( 1, mt_getrandmax() ), true ) );
$token1 = hash( 'sha1', uniqid( mt_rand( 1, mt_getrandmax() ), true ) );
$token2 = hash( 'sha1', $_SERVER['HTTP_ACCEPT_ENCODING'] . $salt1 . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . $token1 . $_SERVER['REMOTE_ADDR'] , true  );

代码完成后,我得到时间和值salt1、token1和token2。我不是在看值,只是运气好,我遇到了这个值:

$salt1 = e93edda7d1810efb661fe0b4eb85c92256516302
$token1 = ca43d77821ddc90b6b0bfebe1a20f1985547dbeb
$token2 = >)c³‡Ìq£Vé‘Æä¯ËÊü*

可以看到,在token2中没有十六进制值。如果这个函数应该返回十六进制值,这是怎么可能的?

您必须在末尾删除true。从文档中可以看到,将这个布尔参数设置为true意味着输出值为原始二进制格式