核對和

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

核對和(英語: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

參見