校验和

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

校验和(英语: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

参见