專(zhuān)利名稱(chēng):一種單證真?zhèn)舞b別的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息安全與計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,涉及一種單證真?zhèn)舞b別的方法,特
別適用于生成有大量單證的用戶(hù),例如稅務(wù)發(fā)票、海關(guān)憑證等。
背景技術(shù):
隨著社會(huì)經(jīng)濟(jì)和技術(shù)的發(fā)展,在經(jīng)濟(jì)活動(dòng)中,不法分子為了牟取非法的利益,經(jīng)常會(huì)偽造、倒賣(mài)單證,造成經(jīng)濟(jì)活動(dòng)中參與各方的經(jīng)濟(jì)損失。以稅務(wù)假發(fā)票為例,假發(fā)票在給制假售假者帶來(lái)巨大利益的同時(shí),給國(guó)家財(cái)政收入造成重大損失。就面值100元的餐飲發(fā)票來(lái)說(shuō),每本票額一萬(wàn)元,商家只要花10元錢(qián)就可從合法渠道買(mǎi)來(lái)。按規(guī)定,該本發(fā)票應(yīng)按5、5%的比率交納稅款550元。按前述的一個(gè)假發(fā)票案計(jì)算,500億元價(jià)值的假發(fā)票,不法分子就可獲利500萬(wàn)元,而國(guó)家的稅收就有上千萬(wàn)元從這當(dāng)中流失掉。 因此單證使用的主管部門(mén),要不斷完善單證管理監(jiān)督機(jī)制,保證其使用和流向走
向依法、規(guī)范、有序的健康軌道。同時(shí)開(kāi)發(fā)適用的技術(shù)手段,保證單證的真實(shí)使用。 在單證真?zhèn)舞b別技術(shù)中,主要有兩類(lèi)加密和防偽技術(shù)。防偽技術(shù)人們比較熟悉的
有類(lèi)似人民幣的水印、絲線(xiàn)、特殊油墨和紙張等。加密技術(shù)主要有類(lèi)似防偽稅控發(fā)票的加密
技術(shù)等。
發(fā)明內(nèi)容
本發(fā)明的目的是在于克服現(xiàn)有技術(shù)中的不足,針對(duì)單證真?zhèn)舞b別的獨(dú)特性,提供一種單證的查詢(xún)碼生成方法。能面向各種類(lèi)型的單證進(jìn)行查詢(xún)碼生成,使用該查詢(xún)碼和單證要素進(jìn)行單證的真?zhèn)舞b別,保證經(jīng)濟(jì)活動(dòng)中參與各方的利益。
本發(fā)明的方法具體步驟如下 步驟(1)、獲取單證的要素?cái)?shù)據(jù),所述的要素?cái)?shù)據(jù)為單證的開(kāi)具方、接受方、標(biāo)的、數(shù)量和金額; 步驟(2)、對(duì)單證的要素?cái)?shù)據(jù)進(jìn)行解析和預(yù)處理; 所述的解析方法為將開(kāi)具方、接受方、標(biāo)的、數(shù)量和金額要素?cái)?shù)據(jù)按照GBK標(biāo)準(zhǔn)(《漢字內(nèi)碼擴(kuò)展規(guī)范》)進(jìn)行編碼,將編碼所形成的信息按照開(kāi)具方、接受方、標(biāo)的、數(shù)量、金額的順序組裝成一條消息字節(jié)串。 所述的預(yù)處理方法為首先對(duì)字節(jié)串長(zhǎng)度末尾進(jìn)行填充,使字節(jié)串位長(zhǎng)度為128位的整數(shù)倍,填充位數(shù)為1 127位,填充的首位為數(shù)字l,末位為數(shù)字l,首位與末位的其他位置為0。然后將填充后長(zhǎng)度為128的整數(shù)倍的字節(jié)串按128位單位進(jìn)行分組,獲得L個(gè)分組,分別表示為I。, I" ...IL—"其中L =填充后字節(jié)串長(zhǎng)度/128。 步驟(3)、設(shè)定四個(gè)長(zhǎng)為8位的整型數(shù)I(0), 1(1), 1(2), 1(3),并賦值,使得I(0)
=0X01, I (1) = 0X23, I (2) = 0X45, I (3) = 0X67 ; 對(duì)步驟(2)所取得的I。分組進(jìn)行MC(Message enCrypt)計(jì)算。 所述的MC計(jì)算包括四輪運(yùn)算,各輪邏輯函數(shù)不同,分別為A(X, Y, Z)、B(X, Y, Z)、C(X, Y, Z)禾口 D(X, Y, Z)為例來(lái)進(jìn)行,
1(0) = I(1) + ((I(0) + (A(I(1), 1(2), I(3))+X[k]) 其中X[k]表示分組中的第k個(gè)字節(jié)(0《k《15) 16次循環(huán) [I (0) I (1) I (2)1(3) 01] [I(3) I (0) I (1)1(2) 12] [I (2) I (3) I (0)1(1) 23] [1(1)1(2)1(3)1(0) 34] [I (0) I (1) I (3)1(2) 45] [I(3) I (0) I (I)1(2) 56] [I (2) I (3) I (0)1(1) 67] [I (1) I (2) I (3)1(0) 78] [I (0) I (1) I (3)1(2) 89] [I(3) I (0) I (I)1(2) 910] [I (2) I (3) I (0)1(1) 1011] [I (1) I (2) I (3)1(0) 1112] [I (0) I (1) I (3)1(2) 1213] [1(3)1(0)1(1)1(2) 1314] [I (2) I (3) I (0)1(1) 1415] [I (1) I (2) I (3)1(0) 1516]
第二輪運(yùn)算如下
本輪的運(yùn)算規(guī)則以畫(huà)l(l)I(2)I(3)k s]為例來(lái)進(jìn)行, (0) = I (1) + ((I (0) + (B (I (1) , I (2) , I (3)) +X [k])
I 1] 6 2]
II 3]
s)
[1(1)1(2)1(3)1(0)04][1(0)1(1)1(3)1(2)55][1(3)1(0)1(1)1(2)106][1(2)1(3)1(0)1(1)157][1(1)1(2)1(3)1(0)48][1(0)1(1)1(3)1(2)99][1(3)1(0)1(1)1(2)1410][1(2)1(3)1(0)1(1)311][1(1)1(2)1(3)1(0)812][1(0)1(1)1(3)1(2)1313][1(3)1(0)1(1)1(2)214][1(2)1(3)1(0)1(1)715][1(1)1(2)1(3)1(0)1216]第三輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I (0) I (1)1(2) I (3) ks]為例來(lái)進(jìn)行,1(0) = I(1) + ((I(0) + (C(I(1), 1(2), I(3))+X[k]) <<< s)
[1(0)1(1)1(2)1(3)51][1(3)1(0)1(1)1(2)82][1(2)1(3)1(0)1(1)113][1(1)1(2)1(3)1(0)144][1(0)1(1)1(3)1(2)15][1(3)1(0)1(1)1(2)46][1(2)1(3)1(0)1(1)77][1(1)1(2)1(3)1(0)108][1(0)1(1)1(3)1(2)139][1(3)1(0)1(1)1(2)010][1(2)1(3)1(0)1(1)311][1(1)1(2)1(3)1(0)612][1(0)1(1)1(3)1(2)913][1(3)1(0)1(1)1(2)1214][1(2)1(3)1(0)1(1)1515][1(1)1(2)1(3)1(0)216]第四輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I (0) I (1)1(2) I (3) ks]為例來(lái)進(jìn)行,1(0) = I(1) + ((I(0) + (D(I(1), 1(2), I(3))+X[k]) <<< s)
[1(0)1(1)1(3)1(2)01][1(3)1(0)1(1)1(2)72][1(2)1(3)1(0)1(1)143][1(1)1(2)1(3)1(0)54]
[i (0) i (1) i (3)1(2) 125] [i(3) i (0) i (1)1(2) 36] [1(2)1(3)1(0)1(1) 107] [i (1) i (2) i (3)1(0) 18] [i (0) i (1) i (3)1(2) 89] [i(3) i (0) i (1)1(2) 1510] [i (2) i (3) i (0)1(1) 611] [i (1) i (2) i (3)1(0) 1312] [i(0) i (1) i (3)1(2) 413] [i(3) i (0) i (1)1(2) 1114] [i (2) i (3) i (0)1(1) 215] [1(1)1(2)1(3)1(0) 916] 每輪進(jìn)行16步迭代運(yùn)算,四輪共需64步迭代運(yùn)算完成。完成64步迭代運(yùn)算后,
更新i (0) , i (1) , i (2)和i (3),更新方法是: 1(0) = ii (0)+1(0) 1(1) = ii(1)+i(1) 1(2) = ii (2)+1(2) 1(3) = ii (3)+1(3) 步驟(4)、以步驟(3)輸出的i(0),i(1),i(2),i(3)為新的整型數(shù),對(duì)步驟(2)所
取得的L分組進(jìn)行mc計(jì)算; 步驟(5)、重復(fù)步驟(4)直到得到分組的輸出r (o) , r a) , r (2) , r (3)為
止; 步驟(e)、將r (0) , r (1) , r (2)和r (3)表示為ie進(jìn)制的ascii碼符號(hào),并按 r (0), r (1), r (2)和r (3)順序組成字符串,在字符串的頭部加上單證開(kāi)具方和接受方
的編碼,生成12個(gè)字符的ascii單證查詢(xún)碼; 步驟(7)、將單證查詢(xún)碼打印或書(shū)寫(xiě)于單證的空白位置,將單證要素和單證查詢(xún)碼
插入開(kāi)具方或者中立第三方的數(shù)據(jù)表供查詢(xún); 步驟(8)、接受方通過(guò)單證查詢(xún)碼鑒別單證的真?zhèn)巍?本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn) 能夠從單證要素生成合適長(zhǎng)度的查詢(xún)碼(12個(gè)ascii碼符號(hào)),便于查詢(xún)中使用。
使用的mc運(yùn)算過(guò)程安全,從算法分析可知采用純強(qiáng)力攻擊尋找一個(gè)消息具有指 定的Hash值的計(jì)算困難性為232,加上開(kāi)具方和接受方的編碼使其對(duì)窮盡攻擊更有抵抗力。
本發(fā)明與現(xiàn)有的防偽稅控發(fā)票使用的技術(shù)主要不同點(diǎn)在于l,實(shí)現(xiàn)簡(jiǎn)單,不需要 特殊的加密設(shè)備;2,加密生成的查詢(xún)碼數(shù)據(jù)信息長(zhǎng)度為12,長(zhǎng)度較短,適于查詢(xún);3,適用于 發(fā)票以外的多種形式的單證。
圖1本發(fā)明的要素?cái)?shù)據(jù)字節(jié)串構(gòu)造圖;
圖2本發(fā)明的查詢(xún)碼生成流程 圖3本發(fā)明的MC計(jì)算流程圖。
具體的實(shí)施方式 圖1給出的是要素?cái)?shù)據(jù)字節(jié)串構(gòu)造圖。從圖中可以看出要素?cái)?shù)據(jù)字符串構(gòu)造。
圖2給出的是查詢(xún)碼生成流程。
(1)分組中獲得的字符串按128位進(jìn)行分組,獲得L個(gè)分組。I。, …Ih。
(2)MC計(jì)算重復(fù)L次,每次都獲得一個(gè)32位的輸出,輸入到下一個(gè)分組的MC計(jì)算。 (3)最后一次MC計(jì)算后,加上開(kāi)具方和接受方的編碼。 圖3給出的是MC計(jì)算流程。
(1)函數(shù)A循環(huán)。 (2)函數(shù)B循環(huán)。 (3)函數(shù)C循環(huán)。
(4)函數(shù)D循環(huán)。 本發(fā)明所選用的具體實(shí)施例如下 步驟(1)、獲取單證的要素?cái)?shù)據(jù),所述的要素?cái)?shù)據(jù)為單證的開(kāi)具方、接受方、標(biāo)的、 數(shù)量和金額; 步驟(2)、對(duì)單證的要素?cái)?shù)據(jù)進(jìn)行解析和預(yù)處理; 所述的解析方法為將開(kāi)具方、接受方、標(biāo)的、數(shù)量和金額要素?cái)?shù)據(jù)按照GBK標(biāo)準(zhǔn) (《漢字內(nèi)碼擴(kuò)展規(guī)范》)進(jìn)行編碼,將編碼所形成的信息按照開(kāi)具方、接受方、標(biāo)的、數(shù)量、 金額的順序組裝成一條消息字節(jié)串。 所述的預(yù)處理方法為首先對(duì)字節(jié)串長(zhǎng)度末尾進(jìn)行填充,使字節(jié)串位長(zhǎng)度為128 位的整數(shù)倍,填充位數(shù)為1 127位,填充的首位為數(shù)字l,末位為數(shù)字l,首位與末位的其 他位置為0。然后將填充后長(zhǎng)度為128的整數(shù)倍的字節(jié)串按128位單位進(jìn)行分組,獲得L個(gè) 分組,分別表示為I。, I" ...IL—"其中L =填充后字節(jié)串長(zhǎng)度/128。 步驟(3)、設(shè)定四個(gè)長(zhǎng)為8位的整型數(shù)I(0), 1(1), 1(2), 1(3),并賦值,使得I(0)
=0X01, I (1) = 0X23, I (2) = 0X45, I (3) = 0X67 ; 對(duì)步驟(2)所取得的I。分組進(jìn)行MC(Message enCrypt)計(jì)算。 所述的MC計(jì)算包括四輪運(yùn)算,各輪邏輯函數(shù)不同,分別為A(X, Y, Z)、B(X, Y, Z)、
C(X, Y, Z)禾口 D(X, Y, Z)。 A(X, Y, Z) = (X|Y)&(X| (-Z)) B (X, Y, Z) = (X | Z) & (Z | (-Y)) C(X, Y, Z) = X&X&Z D(X, Y, Z) = X'Y'Z 其中,&表示與,|表示或,-表示非,~表示異或。
第一輪運(yùn)算如下 將I (0)臨時(shí)保存為變量II (0) , I (1)保存為變量II (1) , I (2)保存為變量II (2),
1(3)保存為變量I1(3); II (0) = 1(0)
II (1) = 1(1)
11(3) = 1(3)本輪的運(yùn)算規(guī)則以[I (0) I (1)1(2) I (3) ks]為例來(lái)進(jìn)行,1(0) = I(1) + ((I(0) + (A(I(1), 1(2), I(3))+X[k]) <<< s)
其中X[k]表示分組中的第k個(gè)字節(jié)(0《k《15) , <<< s表示循環(huán)右移s位,進(jìn)行16次循環(huán)[1(0)1(1)1(2)1(3)01][1(3)1(0)1(1)1(2)12][1(2)1(3)1(0)1(1)23][1(1)1(2)1(3)1(0)34][1(0)1(1)1(3)1(2)45][1(3)1(0)1(1)1(2)56][1(2)1(3)1(0)1(1)67][1(1)1(2)1(3)1(0)78][1(0)1(1)1(3)1(2)89][1(3)1(0)1(1)1(2)910][1(2)1(3)1(0)1(1)1011][1(1)1(2)1(3)1(0)1112][1(0)1(1)1(3)1(2)1213][1(3)1(0)1(1)1(2)1314][1(2)1(3)1(0)1(1)1415][1(1)1(2)1(3)1(0)1516]第二輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I (0) I (1)1(2) I (3) ks]為例來(lái)進(jìn)行,1(0) = I(1) + ((I(0) + (B(I(1), 1(2), I(3))+X[k]) <<< s)
[1(0)1(1)1(2)1(3)11][1(3)1(0)1(1)1(2)62][1(2)1(3)1(0)1(1)113][1(1)1(2)1(3)1(0)04][1(0)1(1)1(3)1(2)55][1(3)1(0)1(1)1(2)106][1(2)1(3)1(0)1(1)157][1(1)1(2)1(3)1(0)48][1(0)1(1)1(3)1(2)99][1(3)1(0)1(1)1(2)1410][1(2)1(3)1(0)1(1)311][1(1)1(2)1(3)1(0)812][1(0)1(1)1(3)1(2)1313][1(3)1(0)1(1)1(2)214]
[1(2)1(3)1(0)1(1)715][1(1)1(2)1(3)1(0)1216]第三輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I (0) I (1)1(2) I (3) ks]為例來(lái)進(jìn)行,1(0) = I(1) + ((I(0) + (C(I(1), 1(2), I(3))+X[k]) <<<
[1(0)1(1)1(2)1(3)51][1(3)1(0)1(1)1(2)82][1(2)1(3)1(0)1(1)113][1(1)1(2)1(3)1(0)144][1(0)1(1)1(3)1(2)15][1(3)1(0)1(1)1(2)46][1(2)1(3)1(0)1(1)77][1(1)1(2)1(3)1(0)108][1(0)1(1)1(3)1(2)139][1(3)1(0)1(1)1(2)010][1(2)1(3)1(0)1(1)311][1(1)1(2)1(3)1(0)612][1(0)1(1)1(3)1(2)913][1(3)1(0)1(1)1(2)1214][1(2)1(3)1(0)1(1)1515][1(1)1(2)1(3)1(0)216]第四輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I (0) I (1)1(2) I (3) ks]為例來(lái)進(jìn)行,1(0) = I(1) + ((I(0) + (D(I(1), 1(2), I(3))+X[k]) <<<
[1(0)1(1)1(3)1(2)01][1(3)1(0)1(1)1(2)72][1(2)1(3)1(0)1(1)143][1(1)1(2)1(3)1(0)54][1(0)1(1)1(3)1(2)125][1(3)1(0)1(1)1(2)36][1(2)1(3)1(0)1(1)107][1(1)1(2)1(3)1(0)18][1(0)1(1)1(3)1(2)89][1(3)1(0)1(1)1(2)1510][1(2)1(3)1(0)1(1)611][1(1)1(2)1(3)1(0)1312][1(0)1(1)1(3)1(2)413][1(3)1(0)1(1)1(2)1114][1(2)1(3)1(0)1(1)215]
[1(1)1(2)1(3)1(0) 9 16] 每輪進(jìn)行16步迭代運(yùn)算,四輪共需64步迭代運(yùn)算完成。完成64步迭代運(yùn)算后,
更新i (0) , i (1) , i (2)和i (3),更新方法是: 1(0) = ii (0)+1(0) 1(1) = ii (1)+1(1) 1(2) = ii (2)+1(2) 1(3) = ii (3)+1(3) 步驟(4)、以步驟(3)輸出的i(0),i(1),i(2),i(3)為新的整型數(shù),對(duì)步驟(2)所
取得的L分組進(jìn)行mc計(jì)算; 步驟(5)、重復(fù)步驟(4)直到得到分組的輸出r (o) , r a) , r (2) , r (3)為
止; 步驟(e)、將r (0) , r (1) , r (2)和r (3)表示為ie進(jìn)制的ascii碼符號(hào),并按 r (0), r (1), r (2)和r (3)順序組成字符串,在字符串的頭部加上單證開(kāi)具方和接受方
的編碼,生成12個(gè)字符的ascii單證查詢(xún)碼;例如浙江:33 ;北京11開(kāi)具方和接受方編碼
序號(hào)編碼1112123134145156217228239311032113312341335143615371641174218431944204521462251235224532554265527612862
13
區(qū) 區(qū) 區(qū)
治 省 治 治
市市省省自省省l^j市省省省省省省省省省省自省市省省省自省省
區(qū)京津北西蒙寧林,海蘇江徽建西東南北南東西南慶川州南藏西肅
地北天河山內(nèi)遼吉黑上江浙安福江山河湖湖廣廣海重四貴云西陜甘
29 63 青海省區(qū) 30 64 寧巫自治區(qū) 31 65 新疆自治區(qū) 步驟(7)、將單證查詢(xún)碼打印或書(shū)寫(xiě)于單證的空白位置,將單證要素和單證查詢(xún)碼
插入開(kāi)具方或者中立第三方的數(shù)據(jù)表供查詢(xún); 步驟(8)、接受方通過(guò)單證查詢(xún)碼鑒別單證的真?zhèn)巍?br>
權(quán)利要求
一種單證真?zhèn)舞b別的方法,其特征在于該方法包括以下步驟步驟(1)、獲取單證的要素?cái)?shù)據(jù),所述的要素?cái)?shù)據(jù)為單證的開(kāi)具方、接受方、標(biāo)的、數(shù)量和金額;步驟(2)、對(duì)單證的要素?cái)?shù)據(jù)進(jìn)行解析和預(yù)處理;所述的解析方法為將開(kāi)具方、接受方、標(biāo)的、數(shù)量和金額要素?cái)?shù)據(jù)按照GBK標(biāo)準(zhǔn)進(jìn)行編碼,將編碼所形成的信息按照開(kāi)具方、接受方、標(biāo)的、數(shù)量、金額的順序組裝成一條消息字節(jié)串;所述的預(yù)處理方法為首先對(duì)字節(jié)串長(zhǎng)度末尾進(jìn)行填充,使字節(jié)串位長(zhǎng)度為128位的整數(shù)倍,填充位數(shù)為1~127位,填充的首位為數(shù)字1,末位為數(shù)字1,首位與末位的其他位置為0;然后將填充后長(zhǎng)度為128的整數(shù)倍的字節(jié)串按128位單位進(jìn)行分組,獲得L個(gè)分組,分別表示為I0,I1,…IL-1,其中L=填充后字節(jié)串長(zhǎng)度/128;步驟(3)、設(shè)定四個(gè)長(zhǎng)為8位的整型數(shù)I(0),I(1),I(2),I(3),并賦值,使得I(0)=0X01,I(1)=0X23,I(2)=0X45,I(3)=0X67;對(duì)步驟(2)所取得的I0分組進(jìn)行MC計(jì)算;所述的MC計(jì)算包括四輪運(yùn)算,各輪邏輯函數(shù)不同,分別為A(X,Y,Z)、B(X,Y,Z)、C(X,Y,Z)和D(X,Y,Z);A(X,Y,Z)=(X|Y)&(X|(-Z))B(X,Y,Z)=(X|Z)&(Z|(-Y))C(X,Y,Z)=X&X&ZD(X,Y,Z)=X^Y^Z其中,&表示與,|表示或,-表示非,^表示異或;第一輪運(yùn)算如下將I(0)臨時(shí)保存為變量II(0),I(1)保存為變量II(1),I(2)保存為變量II(2),I(3)保存為變量II(3);II(0)=I(0)II(1)=I(1)II(2)=I(2)II(3)=I(3)本輪的運(yùn)算規(guī)則以[I(0)I(1)I(2)I(3)k s]為例來(lái)進(jìn)行,I(0)=I(1)+((I(0)+(A(I(1),I(2),I(3))+X[k])<<<s)其中X[k]表示分組中的第k個(gè)字節(jié)(0≤k≤15),<<<s表示循環(huán)右移s位,進(jìn)行16次循環(huán)[I(0)I(1)I(2)I(3)01][I(3)I(0)I(1)I(2)12][I(2)I(3)I(0)I(1)23][I(1)I(2)I(3)I(0)34][I(0)I(1)I(3)I(2)45][I(3)I(0)I(1)I(2)56][I(2)I(3)I(0)I(1)67][I(1)I(2)I(3)I(0)78][I(0)I(1)I(3)I(2)89][I(3)I(0)I(1)I(2)910][I(2)I(3)I(0)I(1)10 11][I(1)I(2)I(3)I(0)11 12][I(0)I(1)I(3)I(2)12 13][I(3)I(0)I(1)I(2)13 14][I(2)I(3)I(0)I(1)14 15][I(1)I(2)I(3)I(0)15 16]第二輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I(0)I(1)I(2)I(3)k s]為例來(lái)進(jìn)行,I(0)=I(1)+((I(0)+(B(I(1),I(2),I(3))+X[k])<<<s)[I(0)I(1)I(2)I(3)11][I(3)I(0)I(1)I(2)62][I(2)I(3)I(0)I(1)11 3][I(1)I(2)I(3)I(0)04][I(0)I(1)I(3)I(2)55][I(3)I(0)I(1)I(2)10 6][I(2)I(3)I(0)I(1)15 7][I(1)I(2)I(3)I(0)48][I(0)I(1)I(3)I(2)99][I(3)I(0)I(1)I(2)14 10][I(2)I(3)I(0)I(1)311][I(1)I(2)I(3)I(0)812][I(0)I(1)I(3)I(2)13 13][I(3)I(0)I(1)I(2)214][I(2)I(3)I(0)I(1)715][I(1)I(2)I(3)I(0)12 16]第三輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I(0)I(1)I(2)I(3)k s]為例來(lái)進(jìn)行,I(0)=I(1)+((I(0)+(C(I(1),I(2),I(3))+X[k])<<<s)[I(0)I(1)I(2)I(3)51][I(3)I(0)I(1)I(2)82][I(2)I(3)I(0)I(1)11 3][I(1)I(2)I(3)I(0)14 4][I(0)I(1)I(3)I(2)15][I(3)I(0)I(1)I(2)46][I(2)I(3)I(0)I(1)77][I(1)I(2)I(3)I(0)10 8][I(0)I(1)I(3)I(2)13 9][I(3)I(0)I(1)I(2)010][I(2)I(3)I(0)I(1)311][I(1)I(2)I(3)I(0)612][I(0)I(1)I(3)I(2)913][I(3)I(0)I(1)I(2)1214][I(2)I(3)I(0)I(1)1515][I(1)I(2)I(3)I(0)216]第四輪運(yùn)算如下本輪的運(yùn)算規(guī)則以[I(0)I(1)I(2)I(3)k s]為例來(lái)進(jìn)行,I(0)=I(1)+((I(0)+(D(I(1),I(2),I(3))+X[k])<<<s)[I(0)I(1)I(3)I(2)0 1][I(3)I(0)I(1)I(2)7 2][I(2)I(3)I(0)I(1)143][I(1)I(2)I(3)I(0)5 4][I(0)I(1)I(3)I(2)125][I(3)I(0)I(1)I(2)3 6][I(2)I(3)I(0)I(1)107][I(1)I(2)I(3)I(0)1 8][I(0)I(1)I(3)I(2)8 9][I(3)I(0)I(1)I(2)1510][I(2)I(3)I(0)I(1)6 11][I(1)I(2)I(3)I(0)1312][I(0)I(1)I(3)I(2)4 13][I(3)I(0)I(1)I(2)11 14][I(2)I(3)I(0)I(1)215][I(1)I(2)I(3)I(0)916]每輪進(jìn)行16步迭代運(yùn)算,四輪共需64步迭代運(yùn)算完成;完成64步迭代運(yùn)算后,更新I(0),I(1),I(2)和I(3),更新方法是I(0)=II(0)+I(0)I(1)=II(1)+I(1)I(2)=II(2)+I(2)I(3)=II(3)+I(3)步驟(4)、以步驟(3)輸出的I(0),I(1),I(2),I(3)為新的整型數(shù),對(duì)步驟(2)所取得的I1分組進(jìn)行MC計(jì)算;步驟(5)、重復(fù)步驟(4)直到得到IL-1分組的輸出I`(0),I`(1),I`(2),I`(3)為止;步驟(6)、將I`(0),I`(1),I`(2)和I`(3)表示為16進(jìn)制的ASCII碼符號(hào),并按I`(0),I`(1),I`(2)和I`(3)順序組成字符串,在字符串的頭部加上單證開(kāi)具方和接受方的編碼,生成12個(gè)字符的ASCII單證查詢(xún)碼;步驟(7)、將單證查詢(xún)碼打印或書(shū)寫(xiě)于單證的空白位置,將單證要素和單證查詢(xún)碼插入開(kāi)具方或者中立第三方的數(shù)據(jù)表供查詢(xún);步驟(8)、接受方通過(guò)單證查詢(xún)碼鑒別單證的真?zhèn)巍?br>
全文摘要
本發(fā)明涉及一種單證真?zhèn)舞b別的方法。現(xiàn)有單證的加密方法存在一定的不足。本發(fā)明方法首先獲取單證的要素?cái)?shù)據(jù),對(duì)單證的要素?cái)?shù)據(jù)進(jìn)行解析和預(yù)處理;設(shè)定四個(gè)長(zhǎng)為8位的整型數(shù)并賦值,對(duì)所取得的I0分組進(jìn)行MC計(jì)算,再對(duì)所取得的I4分組進(jìn)行MC計(jì)算,在字符串的頭部加上單證開(kāi)具方和接受方的編碼,生成12個(gè)字符的ASCII單證查詢(xún)碼;將單證查詢(xún)碼打印或書(shū)寫(xiě)于單證的空白位置,將單證要素和單證查詢(xún)碼插入開(kāi)具方或者中立第三方的數(shù)據(jù)表供查詢(xún);接受方通過(guò)單證查詢(xún)碼鑒別單證的真?zhèn)?。本發(fā)明方法能夠從單證要素生成合適長(zhǎng)度的查詢(xún)碼,便于查詢(xún)中使用。本發(fā)明方法使用的MC運(yùn)算過(guò)程安全。本發(fā)明實(shí)現(xiàn)簡(jiǎn)單、適于查詢(xún)。
文檔編號(hào)G07D7/02GK101739748SQ20091015450
公開(kāi)日2010年6月16日 申請(qǐng)日期2009年11月12日 優(yōu)先權(quán)日2009年11月12日
發(fā)明者吳惠良 申請(qǐng)人:浙江浙科信息技術(shù)有限公司