php散列(';crc32';)和crc32()返回不同的值
我想问一下PHP crc32哈希。 我尝试使用php散列(';crc32';)和crc32()返回不同的值,php,hash,crc32,Php,Hash,Crc32,我想问一下PHP crc32哈希。 我尝试使用hash('md5','value')和md5('value')返回相同的输出 输出:2063c1608d6e0baf80249c42e2be5804 但是当我尝试使用hash('crc32','value')和crc32('value')时,它返回不同的输出 hash()输出:e0a39b72 crc32()输出:494360628 有人知道为什么它可以返回不同的输出吗 谢谢:) hash(“crc32b”,$str)将返回与str\u pad(d
hash('md5','value')
和md5('value')
返回相同的输出
输出:2063c1608d6e0baf80249c42e2be5804
但是当我尝试使用hash('crc32','value')
和crc32('value')
时,它返回不同的输出
hash()输出:e0a39b72
crc32()输出:494360628
有人知道为什么它可以返回不同的输出吗
谢谢:)
hash(“crc32b”,$str)
将返回与str\u pad(dechex(crc32($str)),8,'0',str\u pad\u LEFT)相同的字符串。
请参见并了解它们之间的差异它们之间有一些细微的差异,首先
crc32()
使用哈希算法crc32b
,并且crc32()
返回一个整数,该整数不同于hash()
,返回十六进制值
$str = 'testing';
$hex = hash('crc32b',$str); // e8f35a06
$dec = crc32($str); // 3908262406
echo dechex($dec) == $hex; // true, both value e8f35a06
echo hexdec($hex) == $dec; // true, both value 3908262406
请记住,32位和64位环境中的值不同。PHP所称的
crc32(…)
或哈希(“crc32b”,…)
(一个返回整数,另一个返回字符串)是标准的PKZip/ITU-T V.42 CRC-32。PHP调用的hash(“crc32”,…)
,奇怪地使用了与不兼容的PHPcrc32()
函数相同的名称,是不同的,是BZIP2 CRC-32。这是因为一个是散列,一个计算字符串的多项式……我明白了,谢谢:)那么,如何使输出相同呢?而不是str_pad(…,8,'0',stru pad_左)
您可以执行sprintf('%08s',…)