我见过8位,16位和32位的CRCs。
在什么时候需要跳到更宽的CRC?
我的直觉反应是基于数据长度:
编辑:看看维基百科关于CRC和Lott的答案,这里有:
<64字节:8位CRC
<16K字节:16位CRC
<512 m字节:32位CRC
发布于 2010-02-23 21:13:11
这不是个研究课题。这是很好理解的:http://en.wikipedia.org/wiki/Cyclic_redundancy_check
数学很简单。8位CRC将所有消息归结为256个值中的一个.如果您的消息长度超过几个字节,则具有相同哈希值的多条消息的可能性越来越高。
类似地,一个16位的CRC为您提供了65,536个可用哈希值中的一个.有这些值之一的任何两条消息的概率是多少?
32位CRC为您提供了大约40亿可用的哈希值.
维基百科的文章中写道:“最大总封锁长度等于2**r − 1”。是零碎的。你不需要做太多的研究就能看到2**9 - 1是511位。使用CRC-8,超过64个字节的多条消息将具有相同的CRC校验和值。
发布于 2012-01-16 23:58:40
儿童权利委员会的有效性取决于多种因素。您不仅需要选择CRC的大小,还要选择要使用的生成多项式。有复杂和非直观的权衡取决于:
channel.
论文由Philip Koopman和Tridib Chakravarty撰写,发表在2004年国际可靠系统和网络会议记录中,给出了一个很好的概述,并作了一些参考。它还为进一步了解提供了参考书目。
http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf
发布于 2016-09-14 19:23:55
CRC长度与文件大小的选择主要是在一个输入与“正确”输入有三位或更少位不同的情况下,而不是在一个大不相同的情况下。如果两种输入有很大的不同,那么在大多数形式的8位校验值(包括CRC)、1/65536与大多数16位校验值的形式(包括CRC)的情况下,错误匹配的可能性约为1/256。CRC的优势来自于对非常相似的输入的处理。
对于一个8位CRC,其多项式产生两个长度为128的周期,在短于未被检测的数据包中,单个、双或三比特错误的分数不会是1/256--它将为零。同样地,使用周期为32768的16位CRC,使用32768比特或更少的分组.
但是,如果分组比CRC周期长,那么如果错误位之间的距离是CRC周期的倍数,则将无法检测到双比特错误。虽然这似乎不是一个非常可能的情况,但CRC8在捕获长数据包中的双位错误时比捕获“数据包完全扰码”错误时要差一些。如果双位错误是第二大最常见的故障模式(仅次于单位错误),那将是糟糕的。然而,如果有什么东西破坏了某些数据,那么带有双比特错误的CRCs的劣等行为可能不是问题。
https://stackoverflow.com/questions/2321676
复制相似问题