複製鏈接
請複製以下鏈接發送給好友

數據校驗

鎖定
數據校驗是為保證數據的完整性進行的一種驗證操作。通常用一種指定的算法對原始數據計算出的一個校驗值,接收方用同樣的算法計算一次校驗值,如果兩次計算得到的檢驗值相同,則説明數據是完整的。
中文名
數據校驗
外文名
Data validation
最簡單的校驗
原始數據和待比較數據直接比較
適用範圍
簡單的數據量極小的通訊。

數據校驗簡介

數據在傳輸的過程中,會受到各種干擾的影響,如脈衝干擾,隨機噪聲干擾和人為干擾等,這會使數據產生差錯。為了能夠控制傳輸過程的差錯,通信系統必須採用有效措施來控制差錯的產生。 
常用的差錯控制方法讓每個傳輸的數據單元帶有足以使接收端發現差錯的冗餘信息,這種方法不能糾正錯誤,但可以發現數據錯誤,這種方法容易實現,檢錯速度快,可以通過重傳使錯誤糾正,所以是非常常用的檢錯方案。 
在種方案中常用的校驗方法有奇偶校驗、CRC(循環冗餘校驗)和校驗和,下面分別介紹這三種校驗算法 [1] 

數據校驗校驗方法

數據校驗最簡單的檢驗

實現方法:最簡單的校驗就是把原始數據和待比較數據直接進行比較,看是否完全一樣這種方法是最安全最準確的。同時也是效率最低的。
應用例子:龍珠cpu在線調試工具bbug.exe。它和龍珠cpu間通訊時,bbug發送一個字節cpu返回收到的字節,bbug確認是剛才發送字節後才繼續發送下一個字節的。

數據校驗奇偶校驗

實現方法:在數據存儲和傳輸中,字節中額外增加一個比特位,用來檢驗錯誤。校驗位可以通過數據位異或計算出來。
應用例子:單片機串口通訊有一模式就是8位數據通訊,另加第9位用於放校驗值。
bcc異或校驗法(block check character)
實現方法:很多基於串口的通訊都用這種既簡單又相當準確的方法。它就是把所有數據都和一個指定的初始值(通常是0)異或一次,最後的結果就是校驗值,通常把它附在通訊數據的最後一起發送出去。接收方收到數據後自己也計算一次異或和校驗值,如果和收到的校驗值一致就説明收到的數據是完整的。
校驗值計算的代碼類似於:
unsigned uCRC=0;//校驗初始值
for(int i=0;i<DataLenth;i++) uCRC^=Data[i];
適用範圍:適用於大多數要求不高的數據通訊
應用例子:ic卡接口通訊、很多單片機系統的串口通訊都使用 [2] 

數據校驗crc循環冗餘校驗

(Cyclic Redundancy Check)
實現方法:這是利用除法餘數的原理來進行錯誤檢測的.將接收到的碼組進行除法運算,如果除盡,則説明傳輸無誤;如果未除盡,則表明傳輸出現差錯。crc校驗具還有自動糾錯能力。
crc檢驗主要有計算法和查表法兩種方法,網上很多實現代碼。
適用範圍:CRC-12碼通常用來傳送6-bit字符串;CRC-16及CRC-CCITT碼則用是來傳送8-bit字符。CRC-32:硬盤數據,網絡傳輸等。
應用例子:rar,以太網卡芯片、MPEG解碼芯片中。

數據校驗md5校驗和數字簽名

實現方法:主要有md5和des算法
適用範圍:數據比較大或要求比較高的場合。如md5用於大量數據、文件校驗,des用於保密數據的校驗(數字簽名)等等。
應用例子:文件校驗、銀行系統的交易數據。

數據校驗實際應用

防止自己的程序被篡改。有些可執行程序,當被改了資源時再運行會有文件已損壞的提示,這就是使用了數據校驗。本例是用md5做為數據校驗的算法。當然你可以使用個性化的,比如des作為數字簽名,那樣安全性更高 [3] 
參考資料
  • 1.    孫麒, 鄭寧, 周志宇. 基於Struts的數據校驗框架的應用研究[J]. 計算機工程與設計, 2004, 25(8):1313-1316.
  • 2.    繆建明, 陳沖, 吳鴻超. 數據採集系統中的CRC數據校驗算法[J]. 福州大學學報(自然科學版), 2003, 31(3):296-298.
  • 3.    陳金平, 王生澤, 吳文英. 基於LabVIEW的串口通信數據校驗和的實現方法[J]. 自動化儀表, 2008, 29(3):32-34.