我想知道CRC32 sum和CRC32C是否会回归0?给定足够大的数据集,简单的答案将是“是”。但是,我想知道CRC32C标准中是否有任何配置可以明确地防止这种情况发生。
这个用例就是我需要能够检查远程文件是否为空,而我所拥有的只是CRC32C校验和。所以,换句话说,我可以推断,如果CRC32C为0,则保证文件为空。
如果可能,请提供有关此定义的标准的任何参考。
答案 0 :(得分:22)
@Yanek几乎完全正确。
为了好玩,这里有一个五字符序列,CRC-32C为零:DYB|O
。这是一个十六进制的四字节序列,给出零:ab 9b e0 9b
。实际上,这是唯一可以这样做的四字节序列。没有三字节或更短的序列会给你零。这就是@Yanek不完全正确的地方,因为对于三字节或更短的序列,零不太可能。在这些情况下,获得零的概率为零。
答案 1 :(得分:17)
零与CRC32校验和的任何其他值一样可能。 CRC基本上是将整个输入(作为一个大二进制数)除以预选值的余数。如果输入恰好可被该值整除,则余数和CRC值为零。
答案 2 :(得分:0)
这个怎么样,不是32位CRC,但是:
newList.addAll(thisList)
或者:
1011 | 110011001010.000
1011
----
1111
1011
----
1001
1011
----
1000
1011
----
1110
1011
----
1011
1011
----
0000 (...)
1011
----
1011
1011
----
0000