【发布时间】:2014-10-23 18:54:57
【问题描述】:
我想知道 CRC32 sum 和 CRC32C 是否会返回 0?给定足够大的数据集,简单的答案将是“是”。但是,我想知道 CRC32C 标准中是否有任何规定可以明确防止这种情况发生。
这个用例是我需要能够检查远程文件是否为空,而我所拥有的只是它的 CRC32C 校验和。所以,换句话说,我可以推断如果 CRC32C 为 0,那么文件肯定是空的。
如果可能,请提供对定义该标准的任何参考。
【问题讨论】:
-
您可以使用自己的校验和吗?在这种情况下,将零定义为仅用于空文件。如果哈希函数恰好产生零,只需将其设置为 1。
-
您知道 CRC32 值但不知道文件的长度?嗯?
-
@usr CRC32C 算法针对速度进行了高度优化,并在 Intel CPU 上的硬件中实现。我需要它来进行线速计算,因此不能选择自定义实现。
-
@Kay 这只是一个例子。实际用例比这更复杂。
-
@dtoux 你只需要附加:
if (crcValue == 0) crcValue = 1;。就是这样。