本技術(shù)涉及通信,特別是涉及一種校驗碼生成方法、數(shù)據(jù)校驗方法、裝置、計算機設(shè)備、存儲介質(zhì)和計算機程序產(chǎn)品。
背景技術(shù):
1、發(fā)送方在發(fā)送數(shù)據(jù)時,通常會通過某種方法對原始數(shù)據(jù)進行計算,生成一個校驗碼。接收方在接收數(shù)據(jù)時用相同的方法對接收數(shù)據(jù)進行計算,通過將計算結(jié)果與發(fā)送方校驗碼相比較,來判斷數(shù)據(jù)傳輸?shù)恼_性和完整性。生成校驗碼的方法被稱為校驗算法。常見的數(shù)據(jù)校驗方法有:異或校驗,和校驗,crc校驗等。
2、硬件電路實現(xiàn)需要傳輸大量的數(shù)據(jù)包,但很難對每個數(shù)據(jù)包的正確性進行核驗。所以硬件電路通常會使用某些校驗算法,在數(shù)據(jù)傳輸中對原始數(shù)據(jù)進行計算,在數(shù)據(jù)傳輸結(jié)束后對比軟件模型和硬件電路的校驗碼,實現(xiàn)電路功能校驗。硬件校驗算法電路通常要求電路實現(xiàn)簡單,面積較小。
3、傳統(tǒng)技術(shù)中,異或校驗是硬件較為常用的校驗算法。它通過對原始數(shù)據(jù)進行異或運算,生成校驗碼。
4、然而,異或校驗是非數(shù)據(jù)敏感和順序敏感的,當(dāng)同時兩個數(shù)據(jù)包發(fā)生一樣的錯誤或者是數(shù)據(jù)包的順序出錯時,異或校驗是無法檢測到的。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種能夠提高校驗準(zhǔn)確性的校驗碼生成方法、數(shù)據(jù)校驗方法、裝置、計算機設(shè)備、計算機可讀存儲介質(zhì)和計算機程序產(chǎn)品。
2、第一方面,本技術(shù)提供一種校驗碼生成方法,所述方法包括:
3、獲取各校驗碼生成數(shù)據(jù);
4、從各所述校驗碼生成數(shù)據(jù)選取待比對數(shù)據(jù),且各所述校驗碼生成數(shù)據(jù)中選取的所述待比對數(shù)據(jù)的位置不同;
5、將所述待比對數(shù)據(jù)進行異或運算得到第一校驗值;
6、獲取所述校驗碼生成數(shù)據(jù)中預(yù)設(shè)位置的數(shù)據(jù),將所述預(yù)設(shè)位置的數(shù)據(jù)進行同或運算得到第一運算結(jié)果;
7、對所述校驗碼生成數(shù)據(jù)中未進行異或運算的數(shù)據(jù)進行異或運算得到第二運算結(jié)果,將第一運算結(jié)果和第二運算結(jié)果進行異或運算得到第二校驗值;
8、基于所述第一校驗值和所述第二校驗值得到校驗碼。
9、在其中一個實施例中,所述從各校驗碼生成數(shù)據(jù)選取待比對數(shù)據(jù),包括:
10、通過移位運算從第一校驗碼生成數(shù)據(jù)中選取第一待比對數(shù)據(jù);
11、通過位選運算從第二校驗碼生成數(shù)據(jù)中選取第二待比對數(shù)據(jù),且所述第一待比對數(shù)據(jù)在所述第一校驗碼生成數(shù)據(jù)中的位置與所述第二待比對數(shù)據(jù)在所述第二校驗碼生成數(shù)據(jù)中的位置不同。
12、在其中一個實施例中,所述按照所述待比對數(shù)據(jù)的位置順序,將所述待比對數(shù)據(jù)進行異或運算得到第一校驗值,包括:
13、將所述第一待比對數(shù)據(jù)和所述第二待比對數(shù)據(jù)按位異或得到第一校驗值。
14、在其中一個實施例中,所述獲取所述校驗碼生成數(shù)據(jù)中預(yù)設(shè)位置的數(shù)據(jù),包括:
15、通過位選運算分別從所述第一校驗碼生成數(shù)據(jù)和所述第二校驗碼生成數(shù)據(jù)中獲取預(yù)設(shè)位置的數(shù)據(jù),其中,所述第一校驗碼生成數(shù)據(jù)的預(yù)設(shè)位置與所述第二校驗碼生成數(shù)據(jù)的預(yù)設(shè)位置不同。
16、在其中一個實施例中,所述對所述校驗碼生成數(shù)據(jù)中未進行異或運算的數(shù)據(jù)進行異或運算得到第二運算結(jié)果,包括:
17、通過取模運算從所述第一校驗碼生成數(shù)據(jù)中確定第一未操作數(shù)據(jù);
18、通過位選運算從所述第二校驗碼生成數(shù)據(jù)中確定第二未操作數(shù)據(jù);
19、將所述第一未操作數(shù)據(jù)和所述第二未操作數(shù)據(jù)進行異或運算得到第二運算結(jié)果。
20、在其中一個實施例中,所述獲取校驗碼生成數(shù)據(jù),包括以下至少一種:
21、獲取第一傳輸數(shù)據(jù)和第二傳輸數(shù)據(jù)作為各校驗碼生成數(shù)據(jù);或者;
22、獲取當(dāng)前校驗碼以及當(dāng)前傳輸數(shù)據(jù)作為校驗碼生成數(shù)據(jù),所述當(dāng)前校驗碼為基于所述當(dāng)前傳輸數(shù)據(jù)的前一傳輸數(shù)據(jù)以及上一校驗碼生成的,所述上一校驗碼的初始值為基于所述第一傳輸數(shù)據(jù)和所述第二傳輸數(shù)據(jù)生成的校驗碼。
23、第二方面,本技術(shù)還提供一種數(shù)據(jù)校驗方法,所述方法包括:
24、接收傳輸數(shù)據(jù)以及第一校驗碼,所述第一校驗碼為基于上述的校驗碼生成方法生成的;
25、通過上述的校驗碼生成方法對所述傳輸數(shù)據(jù)進行處理,得到第二校驗碼;
26、在所述第一校驗碼和所述第二校驗碼相同時,所述傳輸數(shù)據(jù)校驗通過。
27、第三方面,本技術(shù)還提供一種校驗碼生成裝置,所述裝置包括:
28、校驗碼生成數(shù)據(jù)獲取模塊,用于獲取各校驗碼生成數(shù)據(jù);
29、待比對數(shù)據(jù)獲取模塊,用于從各所述校驗碼生成數(shù)據(jù)選取待比對數(shù)據(jù),且各所述校驗碼生成數(shù)據(jù)中選取的所述待比對數(shù)據(jù)的位置不同;
30、第一異或模塊,用于將所述待比對數(shù)據(jù)進行異或運算得到第一校驗值;
31、同或模塊,用于獲取所述校驗碼生成數(shù)據(jù)中預(yù)設(shè)位置的數(shù)據(jù),將所述預(yù)設(shè)位置的數(shù)據(jù)進行同或運算得到第一運算結(jié)果;
32、第二異或模塊,用于對所述校驗碼生成數(shù)據(jù)中未進行異或運算的數(shù)據(jù)進行異或運算得到第二運算結(jié)果,將第一運算結(jié)果和第二運算結(jié)果進行異或運算得到第二校驗值;
33、第一校驗碼生成模塊,用于基于所述第一校驗值和所述第二校驗值得到校驗碼。
34、第四方面,本技術(shù)還提供一種數(shù)據(jù)校驗裝置,所述裝置包括:
35、接收模塊,用于接收傳輸數(shù)據(jù)以及第一校驗碼,所述第一校驗碼為基于上述的校驗碼生成裝置生成的;
36、第二校驗碼生成模塊,用于通過上述的校驗碼生成裝置對所述傳輸數(shù)據(jù)進行處理,得到第二校驗碼;
37、校驗?zāi)K,用于在所述第一校驗碼和所述第二校驗碼相同時,所述傳輸數(shù)據(jù)校驗通過。
38、第五方面,本技術(shù)還提供一種計算機設(shè)備,包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)上述任意一個實施例中所述的方法的步驟。
39、第六方面,本技術(shù)還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述任意一個實施例中所述的方法的步驟。
40、第七方面,本技術(shù)還提供一種計算機程序產(chǎn)品,包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)上述任意一個實施例中所述的方法的步驟。
41、上述校驗碼生成方法、數(shù)據(jù)校驗方法、裝置、計算機設(shè)備、存儲介質(zhì)和計算機程序產(chǎn)品,獲取各校驗碼生成數(shù)據(jù);從所述校驗碼生成數(shù)據(jù)選取待比對數(shù)據(jù),且各所述校驗碼生成數(shù)據(jù)中選取的所述待比對數(shù)據(jù)的位置不同;按照所述待比對數(shù)據(jù)的位置順序,將所述待比對數(shù)據(jù)進行異或運算得到第一校驗值;這樣截取兩個數(shù)據(jù)包不同位置的比特進行異或運算,數(shù)據(jù)之間不再是直接的按位異或,所以運算規(guī)則也不再滿足可逆性和交換律;此外獲取所述校驗碼生成數(shù)據(jù)中預(yù)設(shè)位置的數(shù)據(jù),將所述預(yù)設(shè)位置的數(shù)據(jù)進行同或運算得到第一運算結(jié)果;對所述校驗碼生成數(shù)據(jù)中未進行異或運算的數(shù)據(jù)進行異或運算得到第二運算結(jié)果,將第一運算結(jié)果和第二運算結(jié)果進行異或運算得到第二校驗值;基于所述第一校驗值和所述第二校驗值得到校驗碼,這樣對未截取到的比特與特定位置的比特進行異或運算和同或運算,提高隨機性,從而提高了校驗碼的準(zhǔn)確性。