弗萊徹校驗和
弗萊徹校驗和是一種錯誤檢測技術,它使用兩個校驗和來確定透過網路通道傳輸的訊息中的單位元錯誤。它是一種塊碼技術,由 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= 𝑐1 𝑀𝑂𝐷 256 和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2= 𝑐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
𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1 = 544 𝑀𝑂𝐷 256 = 34
𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2 = 1908 𝑀𝑂𝐷 256 = 123
廣告