數據校驗
用指定演演算法計算出的校驗值
數據校驗是為保證數據的完整性,用一種指定的演演算法對原始數據計算出一個校驗值的驗證操作。接收方用同樣的演演算法計算一次校驗值,如果和隨數據提供的校驗值一樣,就說明數據是完整的。
實現方法:最簡單的校驗就是把原始數據和待比較數據直接進行比較,看是否完全一樣這種方法是最安全最準確的。同時也是效率最低的。
適用範圍:簡單的數據量極小的通訊。
應用例子:龍珠cpu在線調試工具bbug.exe。它和龍珠cpu間通訊時,bbug發送一個位元組cpu返回收到的位元組,bbug確認是剛才發送位元組后才繼續發送下一個位元組的。
實現方法:在數據存儲和傳輸中,位元組中額外增加一個比特位,用來檢驗錯誤。校驗位可以通過數據位異或計算出來。
實現方法:很多基於串口的通訊都用這種既簡單又相當準確的方法。它就是把所有數據都和一個指定的初始值(通常是0)異或一次,最後的結果就是校驗值,通常
把她附在通訊數據的最後一起發送出去。接收方收到數據后自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的數據是完整的。
校驗值計算的代碼類似於:
unsigned uCRC=0;//校驗初始值
for(int i=0;i
適用範圍:適用於大多數要求不高的 數據通訊。
應用例子:ic卡介面通訊、很多單片機系統的 串口通訊都使用。
(Cyclic Redundancy Check)
實現方法:這是利用除法及餘數的原理來進行錯誤檢測的。將接收到的碼組進行除法運算
,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現差錯。crc校驗
具還有自動糾錯能力。
crc檢驗主要有計演演算法和查表法兩種方法,網上很多實現代碼。
8-bit字元。CRC-32:硬碟數據,網路傳輸等
應用例子:rar,乙太網卡晶元、MPEG解碼晶元中
實現方法:主要有md5和des演演算法。
密數據的校驗(數字簽名)等等。
應用例子:文件校驗、銀行系統的交易數據
防止自己的程序被篡改的例子。
有些可執行程序,當被改了資源時再運行會有文件已損壞的提示,這就是使
用了數據校驗。本例是用md5做為數據校驗的演演算法。當然你可以使用個性化的
比如des作為數字簽名,那樣安全性更高。
編譯時,將提示如圖1的信息,請記下上面的數值,然後寫回程序的比較字元
中。再次編譯就不會提示了,直接進入程序。如果你使用pe資源修改器修改
改該exe文件了資源,再運行又會出現圖1的提示。