【轉】常見的數據校驗方法


轉載地址:https://blog.csdn.net/ky_heart/article/details/53048692

常見的數據校驗方法

 

1.      校驗是什么

校驗,是為保護數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。當接收方用同樣的算法再算一次校驗值,如果兩次校驗值一樣,表示數據完整。

 

2.      最簡單的校驗

實現方法:將原始數據和待比較的數據直接進行比較,看是否完全一樣。

特點:最安全准確效率最低

適用范圍:簡單的數據量極小的通訊

 

3.       奇偶校驗

實現方法:在數據存儲和傳輸中,字節中額外增加一個比特位,用來傳送奇/偶校驗位來檢驗錯誤。

奇校驗:所有傳送的數位(含字符的各數位和校驗位)中,“1”的個數為奇數,如:

1 0110,0101

0 0110,0001

偶校驗:所有傳送的數位(含字符的各數位和校驗位)中,“1”的個數為偶數,如:

1 0100,0101

0 0100,0001

 

 

 

特點:能夠檢測出信息傳輸過程中的1位誤碼。

      出現錯誤后,不能進行修改,只能要求重發。

      簡單,應用范圍廣。

 

 

4.       CRC循環冗余校驗

實現方法:利用除數以及余數的原理進行錯誤檢測,將接收到的碼組進行除法運算 
,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現差錯。

生成CRC碼的基本原理:任意一個由二進制位串組成的代碼都可以和一個系數僅為‘0’和‘1’取值的多項式一一對應。例如:代碼1010111對應的多項式為x6+x4+x2+x+1,而多項式為x5+x3+x2+x+1對應的代碼101111。

CRC碼集選擇的原則:若設碼字長度為N,信息字段為K位,校驗字段為R位(N=K+R),則對於CRC碼集中的任一碼字,存在且僅存在一個R次多項式g(x),使得

V(x)=A(x)g(x)=xRm(x)+r(x);

其中:    m(x)為K次信息多項式, r(x)為R-1次校驗多項式,

         g(x)稱為生成多項式:

g(x)=g0+g1x+g2x2+...+g(R-1)x(R-1)+gRxR

發送方通過指定的g(x)產生CRC碼字,接收方則通過該g(x)來驗證收到的CRC碼字。

CRC校驗碼軟件生成方法:

    借助於多項式除法,其余數為校驗字段。

例如:信息字段代碼為: 1011001;對應m(x)=x6+x4+x3+1 

     假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的代碼為: 11001

      x4m(x)=x10+x8+x7+x4 對應的代碼記為:10110010000;

采用多項式除法:  得余數為: 1010     (即校驗字段為:1010)

發送方:發出的傳輸字段為: 1 0 1 1 0 0 11 0 10

                         信息字段      校驗字段

接收方:使用相同的生成碼進行校驗:接收到的字段/生成碼(二進制除法)

                 如果能夠除盡,則正確。

 

特點:信息字段和校驗字段的長度可以任意選定。

      編碼和解碼方法簡單,檢錯和糾錯能力強,在通信領域廣泛地用於實現差錯控制。

 

具體實現代碼見博客:http://blog.csdn.net/xiaoku

 

 

5.       bcc異或校驗法

實現方法:將所有數據都和一個指定的初始值(通常是0)異或一次,所得結果為校驗值。接收方收到數據后自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的數據是完整的。 

特點:應用於很多基於串口的通訊方法。

 

 

6.    md5校驗和數字簽名

實現方法:主要有md5和des算法。 

適用范圍:數據比較大或要求比較高的場合。如md5用於大量數據、文件校驗,des用於保密數據的校驗(數字簽名)等等。 

應用例子:文件校驗、銀行系統的交易數據 

如客戶往我們數據中心同步一個文件,該文件使用MD5校驗,那么客戶在發送文件的同時會再發一個存有校驗碼的文件,我們拿到該文件后做MD5運算,得到的計算結果與客戶發送的校驗碼相比較,如果一致則認為客戶發送的文件沒有出錯,否則認為文件出錯需要重新發送


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM