首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP散列(‘crc32’)和crc32()返回不同的值

PHP散列(‘crc32’)和crc32()返回不同的值
EN

Stack Overflow用户
提问于 2016-11-22 12:19:19
回答 3查看 8.5K关注 0票数 4

我想问一下关于PHP的问题。我试过使用hash('md5','value')md5('value')返回相同的输出。

输出: 2063c1608d6e0baf80249c42e2be5804

但是,当我尝试使用hash('crc32','value')crc32('value')时,它的返回结果是不同的。

散列()输出: e0a39b72 crc32()输出: 494360628

有人知道它为什么会返回不同的输出吗?

谢谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-22 12:24:00

hash("crc32b", $str)将返回与str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)相同的字符串。

参见手册以及crc32和crc32b之间的区别

票数 4
EN

Stack Overflow用户

发布于 2016-11-22 12:34:18

它们之间的差别很小,首先,crc32()使用哈希算法crc32bcrc32()返回整数,而不像返回十六进制值的hash()

代码语言:javascript
复制
$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位环境中,值是不同的。

票数 3
EN

Stack Overflow用户

发布于 2016-11-22 23:32:42

PHP所称的crc32(...)hash("crc32b", ...) (一个返回整数,另一个返回字符串)是标准的PKZip/ITU-TV.42 CRC-32。PHP调用的是hash("crc32", ...),奇怪的是使用与不兼容的PHP crc32()函数相同的名称,这是不同的,也就是BZIP2 CRC-32。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40741707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档