【问题标题】:CRC-32 oddity in PHPPHP 中的 CRC-32 异常
【发布时间】:2014-10-23 08:15:20
【问题描述】:

crc32($data) 产生与 PHP 中的 hash("crc32", $data) 完全不同的哈希值有什么具体原因吗?

考虑一下这段代码 sn-p(也在线发布在 http://ideone.com/eqbin4):

<?php
$data = "message";
echo(sprintf("%08x", crc32($data)) . "\n");
echo(hash("crc32", $data) . "\n");
?>

输出:

b6bd307f
c048b5b8

我在这里做错了什么,或者这只是 PHP 的好奇心,对相同类型的哈希使用不同的 CRC-32 计算方法?

【问题讨论】:

  • 您使用的是 32 位 PHP 吗?
  • 版本是 PHP 5.5.11,我本地服务器上的 x86 架构。不确定 ideone.com 使用的 PHP 版本,输出是否相同。

标签: php hash crc crc32


【解决方案1】:

看起来crc32($d) 函数等同于hash("crc32b", $d) 调用,而不是hash("crc32", $d)

【讨论】:

  • 是的,实际上似乎是这样。谢谢!
  • 但哪个 CRC32 是“真实”的?
  • 我会说crc32(不是crc32b)版本是“真正的”版本。我认为这也是在其他语言中实现为 crc32 的那个。但我会测试这是100%肯定! :)
猜你喜欢
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 2016-03-12
  • 2011-08-03
  • 1970-01-01
  • 2015-03-26
  • 2019-07-23
  • 2011-04-10
相关资源
最近更新 更多