【问题标题】:What is the difference between crc32 and crc32b?crc32 和 crc32b 有什么区别?
【发布时间】:2013-04-07 09:47:42
【问题描述】:

显然PHP函数hash()可以用算法crc32crc32b调用?它们有什么区别?

【问题讨论】:

标签: php


【解决方案1】:

两种不同的算法。 CRC32b 是定义here 的一致性算法的实现,而CRC32 是定义here 的帧校验序列。它们是不同的东西,尽管差异通常不大。

一种检查方法:

<?php
echo hash("crc32", __FILE__)."<br/>";
echo hash("crc32b", __FILE__); ?>

由于它们的相似性,起始十六进制值会比较相似。

【讨论】:

  • 是否有理由选择其中之一?
  • @user2045006:不。它们仅在实现细节和历史用途上有所不同。一种适用于流,另一种适用于帧。在大多数情况下,可以假定这在性能上是等效的。
【解决方案2】:

根据 apm 在 php.net 上的回答:“我已验证“crc32”的输出是 ITU I.363.5 算法(又名 AAL5 CRC - 由 BZIP2 推广但也用于 ATM 传输 - 该算法是与 Cksum 中的 POSIX 1003.2-1992 中的相同,但最后将大小填充到 CRC 中以进行额外测量。-- crc32b 是 ITU V.42 的 32 位帧校验序列(用于以太网并普及通过 PKZip)。此 CRC 的输出以 Intel little endian 格式普及,并将在同一文件上生成 cbf43926。"

完整评论:http://www.php.net/manual/en/function.hash-file.php#104836

【讨论】:

    【解决方案3】:

    crc32 和 crc32b 之间的区别在 mhash 手册页中进行了说明。 crc32 是在以太网上使用的,而 crc32b 是在 zip、png 上使用的......它们在使用的表上有所不同。

    quote taken from php.net

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 2013-03-18
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      相关资源
      最近更新 更多