常用的資料校驗方法
阿新 • • 發佈:2019-02-08
1.什麼是資料校驗
通俗的說,就是為保證資料的完整性,用一種指定的演算法對原始資料計算出的一個校驗值。接收方用同樣的演算法計算一次校驗值,如果和隨資料提供的校驗值一樣,就說明資料是完整的。
2.最簡單的檢驗
實現方法:最簡單的校驗就是把原始資料和待比較資料直接進行比較,看是否完全一樣這種方法是最安全最準確的。同時也是效率最低的。
適用範圍:簡單的資料量極小的通訊。
應用例子:龍珠cpu線上除錯工具bbug.exe。它和龍珠cpu間通訊時,bbug傳送一個位元組cpu返回收到的位元組,bbug確認是剛才傳送位元組後才繼續傳送下一個位元組的。
3.奇偶校驗Parity Check
實現方法:在資料儲存和傳輸中,位元組中額外增加一個位元位,用來檢驗錯誤。校驗位可以通過資料位異或計算出來。
應用例子:微控制器串列埠通訊有一模式就是8位資料通訊,另加第9位用於放校驗值。
4.bcc異或校驗法(block check character)
實現方法:很多基於串列埠的通訊都用這種既簡單又相當準確的方法。它就是把所有資料都和一個指定的初始值(通常是0)異或一次,最後的結果就是校驗值,通常
把她附在通訊資料的最後一起傳送出去。接收方收到資料後自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的資料是完整的。
校驗值計算的程式碼類似於:
unsigned uCRC=0;//校驗初始值
for(int i=0;i<DataLenth;i++) uCRC^=Data[i];
適用範圍:適用於大多數要求不高的資料通訊。
應用例子:ic卡介面通訊、很多微控制器系統的串列埠通訊都使用。
5.crc迴圈冗餘校驗(Cyclic Redundancy Check)
實現方法:這是利用除法及餘數的原理來進行錯誤檢測的.將接收到的碼組進行除法運算
,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現差錯。crc校驗
具還有自動糾錯能力。
crc檢驗主要有計演算法和查表法兩種方法,網上很多實現程式碼。
適用範圍:CRC-12碼通常用來傳送6-bit字串;CRC-16及CRC-CCITT碼則用是來傳送
8-bit字元。CRC-32:硬碟資料,網路傳輸等
應用例子:rar,乙太網卡晶片、MPEG解碼晶片中
6.md5校驗和數字簽名
實現方法:主要有md5和des演算法。
適用範圍:資料比較大或要求比較高的場合。如md5用於大量資料、檔案校驗,des用於保
密資料的校驗(數字簽名)等等。
應用例子:檔案校驗、銀行系統的交易資料
通俗的說,就是為保證資料的完整性,用一種指定的演算法對原始資料計算出的一個校驗值。接收方用同樣的演算法計算一次校驗值,如果和隨資料提供的校驗值一樣,就說明資料是完整的。
2.最簡單的檢驗
實現方法:最簡單的校驗就是把原始資料和待比較資料直接進行比較,看是否完全一樣這種方法是最安全最準確的。同時也是效率最低的。
適用範圍:簡單的資料量極小的通訊。
應用例子:龍珠cpu線上除錯工具bbug.exe。它和龍珠cpu間通訊時,bbug傳送一個位元組cpu返回收到的位元組,bbug確認是剛才傳送位元組後才繼續傳送下一個位元組的。
3.奇偶校驗Parity Check
實現方法:在資料儲存和傳輸中,位元組中額外增加一個位元位,用來檢驗錯誤。校驗位可以通過資料位異或計算出來。
應用例子:微控制器串列埠通訊有一模式就是8位資料通訊,另加第9位用於放校驗值。
4.bcc異或校驗法(block check character)
實現方法:很多基於串列埠的通訊都用這種既簡單又相當準確的方法。它就是把所有資料都和一個指定的初始值(通常是0)異或一次,最後的結果就是校驗值,通常
把她附在通訊資料的最後一起傳送出去。接收方收到資料後自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的資料是完整的。
校驗值計算的程式碼類似於:
unsigned uCRC=0;//校驗初始值
for(int i=0;i<DataLenth;i++) uCRC^=Data[i];
適用範圍:適用於大多數要求不高的資料通訊。
應用例子:ic卡介面通訊、很多微控制器系統的串列埠通訊都使用。
5.crc迴圈冗餘校驗(Cyclic Redundancy Check)
實現方法:這是利用除法及餘數的原理來進行錯誤檢測的.將接收到的碼組進行除法運算
,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現差錯。crc校驗
具還有自動糾錯能力。
crc檢驗主要有計演算法和查表法兩種方法,網上很多實現程式碼。
適用範圍:CRC-12碼通常用來傳送6-bit字串;CRC-16及CRC-CCITT碼則用是來傳送
8-bit字元。CRC-32:硬碟資料,網路傳輸等
應用例子:rar,乙太網卡晶片、MPEG解碼晶片中
6.md5校驗和數字簽名
實現方法:主要有md5和des演算法。
適用範圍:資料比較大或要求比較高的場合。如md5用於大量資料、檔案校驗,des用於保
密資料的校驗(數字簽名)等等。
應用例子:檔案校驗、銀行系統的交易資料