弗莱彻校验和


弗莱彻校验和是一种错误检测技术,它使用两个校验和来确定通过网络信道传输的消息中的单比特错误。它是一种块码技术,由 John G. Fletcher 于 1970 年代在美国劳伦斯利弗莫尔实验室发明。

校验和是根据要传输的数据块中的数据值创建的,并附加到数据中。当接收方收到此数据时,将重新计算校验和并与现有校验和进行比较。不匹配表示发生错误。

此方法的错误检测能力几乎与循环冗余校验 (CRC) 相同,但所需的计算量要少得多。

弗莱彻校验和的版本

弗莱彻校验和有三种流行的算法:

  • 弗莱彻-16 - 数据字被分成 8 位块。然后,计算两个 8 位校验和,并将其追加以形成一个 16 位弗莱彻校验和。

  • 弗莱彻-32 - 数据字被分成 16 位块。计算两个 16 位校验和,并将其追加以形成一个 32 位弗莱彻校验和。

  • 弗莱彻-64 - 数据字被分成 32 位块。计算两个 32 位校验和,并将其追加以形成一个 32 位弗莱彻校验和。

计算弗莱彻校验和的算法

INPUT : data blocks of equal sizes, 𝑏1,𝑏2………… 𝑏𝑛
OUTPUT : two checksums, 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1 and 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2, of 1 byte each

步骤 1) 初始化部分和以及总和,𝑐1=0 和 𝑐2=0

步骤 2) 对于每个数据块,𝑏𝑖

  • i. 将 𝑏𝑖 加到 𝑐1
  • ii. 将 𝑐1 的更新值加到 𝑐2

步骤 3) 计算校验和,

  • 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1= 𝑐𝑀𝑂𝐷 256 和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2= 𝑐𝑀𝑂𝐷 256

步骤 4) 将校验和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1 和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2 附加到数据块 𝑏1、𝑏2………… 𝑏𝑛

弗莱彻校验和计算示例

假设有五个数据块,163、200、19、74 和 88。计算如下:

Block Number    Data Block   c1    c2
     -              -        0     0
     1             163      163   163
     2             200      363   526
     3              19      382 908
4 74 456 1364
5 88 544 1908

𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚= 544 𝑀𝑂𝐷 256 = 34 

𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚= 1908 𝑀𝑂𝐷 256 = 123

更新于: 2020年6月30日

4K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告