哈希函数返回不是十六进制值

时间:2014-07-01 13:48:27

标签: php hash benchmarking sha

我只是在哈希函数及其速度上尝试一些基准测试,在一种情况下,我遇到了奇怪的问题。代码很简单,我从随机数创建哈希,然后从随机的另一个哈希,我把它与几个服务器和本地值放在一起,并采取多少执行。

我知道它是疯狂的代码,坚持它只是为了基准和问题是出于我的好奇心:

CODE:

$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中没有hexa值。如果此函数应返回hexa值,该怎么可能?

1 个答案:

答案 0 :(得分:1)

您必须在结尾处删除true。从documentation可以看出,将此布尔参数设置为true意味着输出值采用原始二进制格式