php散列(';crc32';)和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

我想问一下PHP crc32哈希。 我尝试使用
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”,…)
,奇怪地使用了与不兼容的PHP
crc32()
函数相同的名称,是不同的,是BZIP2 CRC-32。

这是因为一个是散列,一个计算字符串的多项式……我明白了,谢谢:)那么,如何使输出相同呢?而不是
str_pad(…,8,'0',stru pad_左)
您可以执行
sprintf('%08s',…)