弗莱彻的校验和

Fletcher’s Checksum

Fletcher校验和是一种错误检测技术,它使用两个校验和来确定通过网络通道传输的消息中的单位错误。这是一种由John G. Fletcher于1970年代在美国劳伦斯利弗莫尔实验室(Lawrence Livermore Labs)发明的分组代码技术。

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

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

Fletcher的校验和的版本

Fletcher的校验和有三种流行的算法:

  • Fletcher – 16:数据字分为8位块。然后,计算两个8位校验和并将其附加以形成16位Fletcher校验和。
  • Fletcher – 32:数据字分为16位块。计算两个16位校验和,并将它们附加起来以形成32位Fletcher校验和。
  • Fletcher – 64:数据字分为32位块。计算两个32位校验和,并将其附加以形成32位Fletcher校验和。

Fletcher校验和的计算算法

1
2
INPUT : data blocks of equal sizes, ??1,??2………… ????
OUTPUT : two checksums, ???????????????1 and ???????????????2, of 1 byte each

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

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

  • 一世。将?? ?? 添加到?? 1
  • ii。将?? 1 的更新值添加到?? 2

步骤3)计算校验和,

  • ??????????????? 1 = ?? 1 ?????? 256和??????????????? 2 = ?? 2 ?????? 256

步骤4)附加校验和,??????????????? 1 和??????????????? 2 < / sub>,到数据块?? 1 ,?? 2 …………?? ??

Fletcher校验和的计算示例

假设有五个数据块163、200、19、74和88。计算为-

1
2
3
4
5
6
7
Block Number  Data Block  c<sub>1</sub>  c<sub>2</sub>
  -       -    0   0
  1       163   163  163
  2       200   363  526
  3       19   382 908
4 74 456 1364
5 88 544 1908

??????????????? 1 = 544 ?????? 256 = 34

??????????????? 2 = 1908 ?????? 256 = 123