常見的數(shù)據(jù)校驗(yàn)方法-轉(zhuǎn)載

常見的數(shù)據(jù)校驗(yàn)方法

http://blog.csdn.net/ky_heart/article/details/53048692

原創(chuàng)2016年11月05日 23:12:38

常見的數(shù)據(jù)校驗(yàn)方法

1.??????校驗(yàn)是什么

校驗(yàn),是為保護(hù)數(shù)據(jù)的完整性,用一種指定的算法對(duì)原始數(shù)據(jù)計(jì)算出的一個(gè)校驗(yàn)值。當(dāng)接收方用同樣的算法再算一次校驗(yàn)值,如果兩次校驗(yàn)值一樣,表示數(shù)據(jù)完整。

2.??????最簡(jiǎn)單的校驗(yàn)

實(shí)現(xiàn)方法:將原始數(shù)據(jù)和待比較的數(shù)據(jù)直接進(jìn)行比較,看是否完全一樣。

特點(diǎn):最安全準(zhǔn)確效率最低

適用范圍:簡(jiǎn)單的數(shù)據(jù)量極小的通訊

3.?????? 奇偶校驗(yàn)

實(shí)現(xiàn)方法:在數(shù)據(jù)存儲(chǔ)和傳輸中,字節(jié)中額外增加一個(gè)比特位,用來傳送奇/偶校驗(yàn)位來檢驗(yàn)錯(cuò)誤。

奇校驗(yàn):所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中,“1”的個(gè)數(shù)為奇數(shù),如:

1 0110,0101

0 0110,0001

偶校驗(yàn):所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中,“1”的個(gè)數(shù)為偶數(shù),如:

1 0100,0101

0 0100,0001

特點(diǎn):能夠檢測(cè)出信息傳輸過程中的1位誤碼。

出現(xiàn)錯(cuò)誤后,不能進(jìn)行修改,只能要求重發(fā)。

簡(jiǎn)單,應(yīng)用范圍廣。

4.?????? CRC循環(huán)冗余校驗(yàn)

實(shí)現(xiàn)方法:利用除數(shù)以及余數(shù)的原理進(jìn)行錯(cuò)誤檢測(cè),將接收到的碼組進(jìn)行除法運(yùn)算,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現(xiàn)差錯(cuò)。

生成CRC碼的基本原理:任意一個(gè)由二進(jìn)制位串組成的代碼都可以和一個(gè)系數(shù)僅為‘0’和‘1’取值的多項(xiàng)式一一對(duì)應(yīng)。例如:代碼1010111對(duì)應(yīng)的多項(xiàng)式為x6+x4+x2+x+1,而多項(xiàng)式為x5+x3+x2+x+1對(duì)應(yīng)的代碼101111。

CRC碼集選擇的原則:若設(shè)碼字長(zhǎng)度為N,信息字段為K位,校驗(yàn)字段為R位(N=K+R),則對(duì)于CRC碼集中的任一碼字,存在且僅存在一個(gè)R次多項(xiàng)式g(x),使得

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

其中:??? m(x)為K次信息多項(xiàng)式, r(x)為R-1次校驗(yàn)多項(xiàng)式,

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

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

發(fā)送方通過指定的g(x)產(chǎn)生CRC碼字,接收方則通過該g(x)來驗(yàn)證收到的CRC碼字。

CRC校驗(yàn)碼軟件生成方法:

借助于多項(xiàng)式除法,其余數(shù)為校驗(yàn)字段。

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

假設(shè)生成多項(xiàng)式為:g(x)=x4+x3+1;則對(duì)應(yīng)g(x)的代碼為: 11001

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

采用多項(xiàng)式除法:? 得余數(shù)為: 1010???? (即校驗(yàn)字段為:1010)

發(fā)送方:發(fā)出的傳輸字段為:1 0 1 1 0 0 11 0 10

信息字段校驗(yàn)字段

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

如果能夠除盡,則正確。

特點(diǎn):信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。

編碼和解碼方法簡(jiǎn)單,檢錯(cuò)和糾錯(cuò)能力強(qiáng),在通信領(lǐng)域廣泛地用于實(shí)現(xiàn)差錯(cuò)控制。

具體實(shí)現(xiàn)代碼見博客:http://blog.csdn.net/xiaoku

5.?????? bcc異或校驗(yàn)法

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

特點(diǎn):應(yīng)用于很多基于串口的通訊方法。

6.md5校驗(yàn)和數(shù)字簽名

實(shí)現(xiàn)方法:主要有md5和des算法。

適用范圍:數(shù)據(jù)比較大或要求比較高的場(chǎng)合。如md5用于大量數(shù)據(jù)、文件校驗(yàn),des用于保密數(shù)據(jù)的校驗(yàn)(數(shù)字簽名)等等。

應(yīng)用例子:文件校驗(yàn)、銀行系統(tǒng)的交易數(shù)據(jù)

如客戶往我們數(shù)據(jù)中心同步一個(gè)文件,該文件使用MD5校驗(yàn),那么客戶在發(fā)送文件的同時(shí)會(huì)再發(fā)一個(gè)存有校驗(yàn)碼的文件,我們拿到該文件后做MD5運(yùn)算,得到的計(jì)算結(jié)果與客戶發(fā)送的校驗(yàn)碼相比較,如果一致則認(rèn)為客戶發(fā)送的文件沒有出錯(cuò),否則認(rèn)為文件出錯(cuò)需要重新發(fā)送。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,145評(píng)論 6 13
  • 一、為什么要進(jìn)行數(shù)據(jù)校驗(yàn) 數(shù)據(jù)校驗(yàn)是為保證數(shù)據(jù)的完整性,用一種指定的算法對(duì)原始數(shù)據(jù)計(jì)算出的一個(gè)校驗(yàn)值。接收方用同樣...
    用電熱毯烤豬閱讀 20,180評(píng)論 0 49
  • CRC校驗(yàn),全名叫做循環(huán)冗余校驗(yàn)碼,是數(shù)據(jù)通訊中最常采用的校驗(yàn)方式。為了學(xué)習(xí)這個(gè)CRC,在網(wǎng)上找了好多資料,下面這...
    AmdyTeng閱讀 6,364評(píng)論 2 6
  • 暮春等雨, 驚醒了故人, 曉月殘掛, 紅窗淚漣, 古道西風(fēng)寒。 問一世花為誰香, 伊人為誰搏滄桑, 我在東臺(tái)樓閣只...
    向緒波閱讀 270評(píng)論 0 2
  • 導(dǎo)語: 在代碼書寫過程中,能起出淺顯易懂的變量名,也是一門勁道的功夫。 當(dāng)時(shí)正在設(shè)計(jì)用戶信息的存儲(chǔ)表結(jié)構(gòu),對(duì)于“專...
    韓兆輝閱讀 751評(píng)論 0 0