簡述校驗(yàn)和算法

除了我們熟悉的加密算法和哈希算法之外,在計(jì)算機(jī)領(lǐng)域還有一種用于數(shù)據(jù)校驗(yàn)的方法,它就是校驗(yàn)和算法。下面我們就通過本文來了解一下校驗(yàn)和算法。

校驗(yàn)和算法簡介

在計(jì)算機(jī)領(lǐng)域中,數(shù)據(jù)的傳輸和存儲(chǔ)是非常常見的操作。然而,在這個(gè)過程中,數(shù)據(jù)可能會(huì)受到各種因素的影響,例如網(wǎng)絡(luò)信號不穩(wěn)定、存儲(chǔ)介質(zhì)損壞等因素,這些因素都可能導(dǎo)致數(shù)據(jù)在傳輸或者存儲(chǔ)過程中發(fā)生錯(cuò)誤。

如果數(shù)據(jù)發(fā)生了錯(cuò)誤,可能會(huì)導(dǎo)致程序或者系統(tǒng)出現(xiàn)嚴(yán)重的問題,因此必須采取措施來確保數(shù)據(jù)的正確性和完整性。于是,校驗(yàn)和算法就應(yīng)運(yùn)而生。

校驗(yàn)和算法是在計(jì)算機(jī)領(lǐng)域中常用的一種數(shù)據(jù)校驗(yàn)方法,其主要目的是檢驗(yàn)數(shù)據(jù)在傳輸過程中是否發(fā)生了錯(cuò)誤或者數(shù)據(jù)的完整性是否受到了損害。這種算法通常用于網(wǎng)絡(luò)傳輸、數(shù)據(jù)存儲(chǔ)等場景下,以確保數(shù)據(jù)的可靠性和正確性。

校驗(yàn)和算法

校驗(yàn)和算法的原理

校驗(yàn)和算法的主要思想是將數(shù)據(jù)中的每個(gè)字節(jié)進(jìn)行加和或者異或操作,然后得到一個(gè)校驗(yàn)和。在數(shù)據(jù)傳輸或者存儲(chǔ)的過程中,接收端會(huì)將接收到的數(shù)據(jù)重新計(jì)算校驗(yàn)和,然后將計(jì)算結(jié)果與發(fā)送端發(fā)送的校驗(yàn)和進(jìn)行比較。

如果相同,則說明數(shù)據(jù)沒有發(fā)生錯(cuò)誤或者數(shù)據(jù)的完整性沒有受到損害,否則就說明數(shù)據(jù)出現(xiàn)了問題。

校驗(yàn)和算法的基本過程

  1. 待校驗(yàn)的相鄰字節(jié)成對組成16比特整數(shù)并計(jì)算其和的二進(jìn)制反碼(二進(jìn)制反碼求和)。
  2. 生成校驗(yàn)和,校驗(yàn)和區(qū)域本身應(yīng)當(dāng)先置0,并和待校驗(yàn)數(shù)據(jù)相加,其和進(jìn)行二進(jìn)制反碼運(yùn)算后賦給校驗(yàn)和區(qū)域。
  3. 檢查校驗(yàn)和,將所有字節(jié)(包括校驗(yàn)和)進(jìn)行相加并求二進(jìn)制反碼,如果結(jié)果為全1(即二進(jìn)制反碼算術(shù)中的0),檢查通過。

校驗(yàn)和算法

常見的校驗(yàn)和算法

校驗(yàn)和算法有非常多的種類,它們采用的算法原理也有很大的差別。其中常見的校驗(yàn)和算法有網(wǎng)際校驗(yàn)和算法(Internet CheckSum)、CRC校驗(yàn)和算法、MD5校驗(yàn)和算法、Adler-32檢驗(yàn)和算法等等。

網(wǎng)際校驗(yàn)和算法概述

在發(fā)送方先把被校驗(yàn)的數(shù)據(jù)劃分為許多16位字的序列。如果數(shù)據(jù)的字節(jié)長度為奇數(shù),則在數(shù)據(jù)尾部補(bǔ)一個(gè)字節(jié)的0以湊成偶數(shù)。用反碼算數(shù)運(yùn)算把所有16位字相加后,然后再對和取反碼,便得到校驗(yàn)和。

在接收方,將收到的數(shù)據(jù)報(bào)(包括校驗(yàn)和字段),將所有16位字再使用反碼算數(shù)運(yùn)算相加一次,將得到的和取反,即得出校驗(yàn)和的計(jì)算結(jié)果。如果數(shù)據(jù)報(bào)在傳輸過程中沒有任何變化,則此結(jié)果必為0,于是就保留這個(gè)數(shù)據(jù)報(bào)。否則即認(rèn)為出差錯(cuò),并將此數(shù)據(jù)報(bào)丟棄。


值得注意的是,大多數(shù)檢驗(yàn)和算法并不是加密算法,也不能用于數(shù)據(jù)加密,它只能用于保障數(shù)據(jù)的可靠性和完整性。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。