我們知道資料在傳輸過程中,可能會存在資料出錯的情況。為了保證資料傳輸的正確性,因此會採取一些方法來判斷資料是否正確,或者在資料出錯的時候及時發現進行改正。常用的幾種資料校驗方式有奇偶校驗、crc校驗、lrc校驗、格雷碼校驗、和校驗、異或校驗等。
一、奇偶校驗
1. 定義
根據被傳輸的一組二進位制**中「1」的個數是奇數或偶數來進行校驗。
使用:通常專門設定乙個奇偶校驗位,存放**中「1」的個數為奇數還是偶數。若用奇校驗,則奇偶校驗位為奇數,表示資料正確。若用偶校驗,則奇偶校驗位為偶數,表示資料正確。
2. 應用
eg. 資料位為 10001100 (1) -> 最後一位為校驗位
此時若約定好為奇校驗,那麼資料表示為正確的,若為偶校驗,那麼資料傳輸出錯了。
二、crc校驗(迴圈冗餘校驗碼)
1. 定義
crc校驗是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查(crc)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。
2. 計算過程:
a> 設定crc暫存器,並給其賦值ffff(hex)。
b> 將資料的第乙個8-bit字元與16位crc暫存器的低8位進行異或,並把結果存入crc暫存器。
c> crc暫存器向右移一位,msb補零,移出並檢查lsb。
d> 如果lsb為0,重複第三步;若lsb為1,crc暫存器與多項式碼相異或。
e> 重複第3與第4步直到8次移位全部完成。此時乙個8-bit資料處理完畢。
f> 重複第2至第5步直到所有資料全部處理完成。
g> 最終crc暫存器的內容即為crc值。
常用的crc迴圈冗餘校驗標準多項式如下: crc(16位) = x16+x15+x2+1 crc(ccitt) = x16+x12 +x5+1
crc(32位) = x32+x26+x23+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
以crc(16位)多項式為例,其對應校驗二進位制位列為1 1000 0000 0000 0101。
3. 應用:在傳送端根據要傳送的k位二進位製碼序列,以一定的規則產生乙個校驗用的r位監督碼(crc碼),附在原始資訊後邊,構成乙個新的二進位製碼序列數共k+r位,然後傳送出去。在接收端,根據資訊碼和crc碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。
三、lrc校驗
1. 定義:lrc校驗用於modbus協定的ascii模式,這各校驗比較簡單,通訊速率較慢,它在ascii協議中使用,檢測了訊息域中除開始的冒號及結束的回車換行號外的內容。它僅僅是把每乙個需要傳輸的資料位元組迭加後取反加1即可。
2. 應用
eg. 5個位元組:01h+03h+21h+02h+00h+02h = 29h,然後取2的補碼=d7h。
四、格雷碼校驗
1. 定義
格雷碼是一種無權碼,也是一種迴圈碼。是指任意兩組相鄰的**之間只有一位不同,其餘為都相同。
如:5的二進位制為0101 6的二進位制為0110
5的格雷碼為0111 6的二進位制為0101
五、校驗和
1. 定義
校驗一組資料項的和是否正確。通常是以十六進製制為數制表示的形式。如果校驗和的數值超過十六進製制的ff,也就是255。
2. 應用
eg. 資料01020304的校驗和為a。
六、異或校驗
1. 定義
bcc校驗其實是奇偶校驗的一種,但也是經常使用並且效率較高的一種。所謂bcc校驗法,就是在傳送前和傳送後分別把bcc以前包括etx字元的所有字元按位異或後,按要求變換(增加或去除乙個固定的值)後所得到的字元進行比較。相等即認為通訊無錯誤,不相等則認為通訊出錯。
七、md5校驗
1. 定義
md5的實際應用是對一段message(位元組串)產生fingerprint(指紋),可以防止被篡改。
常用校驗方式
常見的校驗方法有 奇偶校驗 迴圈冗餘校驗crc 異或校驗 校驗和 漢明校驗 1.奇偶校驗 乙個二進碼字,如果它的碼元有奇數個1,就稱為具有奇性。例如,碼字 1011010111 有七個1,因此,這個碼字具有奇性。同樣,偶性碼字具有偶數個1。注意奇性檢測等效於所有碼元的模二加,並能夠由所有碼元的異或運...
常用校驗方法
是否為空校驗 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...
MVC校驗方式 六
一 以往的校驗都是自己寫正規表示式校驗,本篇講的是通過mvc自帶的jquery檔案進行校驗 實現步驟 1.在webform頁面中引入兩個jquery檔案,10,11行的 1 page language c inherits system.web.mvc.viewpage 2 import names...