我想问一下关于PHP的问题。我试过使用hash('md5','value')和md5('value')返回相同的输出。
输出: 2063c1608d6e0baf80249c42e2be5804
但是,当我尝试使用hash('crc32','value')和crc32('value')时,它的返回结果是不同的。
散列()输出: e0a39b72 crc32()输出: 494360628
有人知道它为什么会返回不同的输出吗?
谢谢:)
发布于 2016-11-22 12:24:00
hash("crc32b", $str)将返回与str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)相同的字符串。
参见手册以及crc32和crc32b之间的区别
发布于 2016-11-22 12:34:18
它们之间的差别很小,首先,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位环境中,值是不同的。
发布于 2016-11-22 23:32:42
PHP所称的crc32(...)或hash("crc32b", ...) (一个返回整数,另一个返回字符串)是标准的PKZip/ITU-TV.42 CRC-32。PHP调用的是hash("crc32", ...),奇怪的是使用与不兼容的PHP crc32()函数相同的名称,这是不同的,也就是BZIP2 CRC-32。
https://stackoverflow.com/questions/40741707
复制相似问题