常見的數據校驗方法

常見的數據校驗方法算法

 

1.      校驗是什麼安全

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

 

2.      最簡單的校驗.net

實現方法:將原始數據和待比較的數據直接進行比較,看是否徹底同樣。blog

特色:最安全準確效率最低md5

適用範圍:簡單的數據量極小的通信get

 

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運算,獲得的計算結果與客戶發送的校驗碼相比較,若是一致則認爲客戶發送的文件沒有出錯,不然認爲文件出錯須要從新發送。

相關文章
相關標籤/搜索