常見的資料校驗方法

2021-07-24 09:32:10 字數 2567 閱讀 3844

常見的資料校驗方法

1.      校驗是什麼

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

2.      最簡單的校驗

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

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

適用範圍:簡單的資料量極小的通訊

3.       奇偶校驗

實現方法:在資料儲存和傳輸中,位元組中額外增加乙個位元位,用來傳送奇/偶校驗位來檢驗錯誤。

奇校驗:所有傳送的數字(含字元的各數字和校驗位)中,「1」的個數為奇數,如:

1 0110,0101

0 0110,0001

偶校驗:所有傳送的數字(含字元的各數字和校驗位)中,「1」的個數為偶數,如:

特點:能夠檢測出資訊傳輸過程中的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

資訊字段      校驗字段

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

如果能夠除盡,則正確。

特點:資訊字段和校驗欄位的長度可以任意選定。

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

具體實現**見部落格:

5.       bcc異或校驗法

實現方法:將所有資料都和乙個指定的初始值(通常是

0)異或一次,所得結果為校驗值。接收方收到資料後自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的資料是完整的。

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

6.   

md5校驗和數字簽名

實現方法:主要有

md5和

des演算法。

適用範圍:資料比較大或要求比較高的場合。如md5用於大量資料、檔案校驗,des用於保密資料的校驗(數字簽名)等等。 

應用例子:檔案校驗、銀行系統的交易資料 

如客戶往我們資料中心同步乙個檔案,該檔案使用

md5校驗,那麼客戶在傳送檔案的同時會再發乙個存有校驗碼的檔案,我們拿到該檔案後做

md5運算,得到的計算結果與客戶傳送的校驗碼相比較,如果一致則認為客戶傳送的檔案沒有出錯,否則認為檔案出錯需要重新傳送。

常見的資料校驗方法

校驗,是為保護資料的完整性,用一種指定的演算法對原始資料計算出的乙個校驗值。當接收方用同樣的演算法再算一次校驗值,如果兩次校驗值一樣,表示資料完整。1.奇偶校驗 實現方法 在資料儲存和傳輸中,位元組中額外增加乙個位元位,用來傳送奇 偶校驗位來檢驗錯誤。奇校驗 所有傳送的數字 含字元的各數字和校驗位 ...

CRC校驗方法

協議中使用 crc校驗 crc 2位元組校驗 協議的word上提供了c的 dephi的vb的,但是沒提供c 的,所以根據vb的,我該寫成c 的。記錄一下,以備以後使用。private static int gen crc byte buffer,int bufferlength c convert....

常用校驗方法

是否為空校驗 function isempty s var lll trim s if lll null lll.length 0 return true else return false 刪除字串左邊的空格 function ltrim str if str.length 0 return st...