前言
一般来说,数据信息在传输过程中有时会受到外界有意或无意的干扰行为,出现数据的篡改和破坏现象,造成数据接收端的不一致行为。于是乎,在信息领域有了数据校验的概念,今天本文主要来简单聊聊其中的经典使用算法CRC(循环冗余校验)以及其在Ozone中的应用实践。
CRC和Checksum的关系
往往我们在谈论CRC的时候,马上会联想到Checksum这个词,二者是等同的意思吗?实则还是有区别的。
首先我们要区分一个概念上的差别,CRC是一种算法,而Checksum我们指的是一组信息,官方的称呼叫做“总和校验码”。而CRC是其中一种计算校验和信息的算法。换句话说,还有其它算法也可以计算出Checksum信息的(比如MD5算法),只是说CRC太经典以至于让我们误以为CRC和Checksum是等号的关系了。
但是不管说用什么方法,我们用生成的Checksum信息的目的是相同的:用于错误检测,以此保证数据在传输过程中的一致性。
CRC算法被广泛地使用在通信和存储信息领域,得益于以下三点:
- 较为简单地实现于二进制的硬件环境下
- 比较容易去数学分析
- 错误检测的实用性高
CRC的算法原理是使用多项式的除法来做校验和结果的生成,具体涉及的数学理论这里不进行详细介绍了。
CRC的实践应用
在CRC的实际应用场景中,它的应用原理如下:
- 读取一段待