校验和

為偵測錯誤而從任意數位資料區塊計算的小型基準

校验和(英語:Checksum)是冗余校验的一种形式。 它是通过错误检测方法,对经过空间(如通信)或时间(如计算机存储)所传送数据的完整性进行检查的一种简单方法。

计算机领域常见的校验和的方法有循环冗余校验(CRC)、MD5SHA家族等。

產生核對和的實際過程一般是向核對函數或核對和算法輸入給定的數據,一個良好的核對和算法通常會對進行很小的修改的輸入數據都會輸出一個顯著不同的值。

算法

一種最簡單直觀的Checksum計算方式是將資料切分成固定長度的小塊後進行加總,接著進行遮罩(mask)運算後得到檢查碼,

例如一筆16進制數值資料{0x6A, 0x00, 0xC8},以加總寬度8 bit,輸出遮罩8 bit計算檢查碼:

Ans = (0x6A + 0x00 + 0xC8) mask 0xFF

= 0x132 mask 0xFF

= 0x32


intel HEX 文件格式定義的檢查欄位(CC)則使用另一種風格的計算方式,等同於將基本的Checksum結果取2補數

CC = 0x100 - ( Sum( data ) mask 0xFF )

例如 16進制數值資料{0x6A, 0x00, 0xC8}

Ans = 0x100 - ((0x6A + 0x00 + 0xC8) mask 0xFF)

= 0x100 - (0x32)

= 0xCE

参见