一種發(fā)票二維碼生成和驗(yàn)證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及票據(jù)防偽領(lǐng)域,具體而言,涉及一種發(fā)票二維碼生成和驗(yàn)證方法。
【背景技術(shù)】
[0002]目前全國(guó)網(wǎng)絡(luò)發(fā)票的推廣工作正在全面展開(kāi),為了實(shí)現(xiàn)網(wǎng)絡(luò)發(fā)票防偽和查驗(yàn),需要在紙質(zhì)發(fā)票上印制發(fā)票二維碼,納稅人通過(guò)掃描該二維碼以進(jìn)行發(fā)票真?zhèn)尾轵?yàn)。
[0003]二維碼具有如下特點(diǎn):(I)高密度編碼,信息容量大,比普通條碼信息量高約幾十倍;(2)編碼范圍廣,二維碼可以把包括圖片、聲音、文字(包括多種語(yǔ)言文字)、簽字、指紋等在內(nèi)的可以數(shù)字化的信息進(jìn)行編碼;(3)容錯(cuò)能力強(qiáng),具有糾錯(cuò)功能,當(dāng)二維碼因穿孔、污損等造成局部損壞時(shí),照樣可以正確識(shí)讀,損壞面積達(dá)50%時(shí)仍可恢復(fù)信息;(4)譯碼可靠性高,二維碼的誤碼率不超過(guò)千萬(wàn)分之一,比普通條碼譯碼錯(cuò)誤率百萬(wàn)分之二要低的多;
(5)成本低、易制作、持久耐用。
[0004]綜上所述,二維碼具有信息存儲(chǔ)量大、追蹤性高、抗損壞性強(qiáng)、備援性大、成本低等優(yōu)良特性。查驗(yàn)時(shí)只需要掃描發(fā)票二維碼信息即可顯示發(fā)票的關(guān)鍵信息,因此,二維碼的應(yīng)用可以大大提高發(fā)票持有者對(duì)發(fā)票真?zhèn)尾轵?yàn)的便利性。
[0005]但是,現(xiàn)有技術(shù)中,二維碼包含的信息沒(méi)有經(jīng)過(guò)加密處理,造假者只要擁有相應(yīng)的二維碼識(shí)讀設(shè)備就可以識(shí)讀出二維碼包含的信息,從而根據(jù)二維碼包含的信息的規(guī)律進(jìn)行造假,這樣,二維碼就難以在一些有保密要求和防偽要求的場(chǎng)合下應(yīng)用。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供一種發(fā)票二維碼生成和驗(yàn)證方法,用以生成具有防偽功能的發(fā)票二維碼,并對(duì)發(fā)票二維碼的真?zhèn)芜M(jìn)行驗(yàn)證。
[0007]為達(dá)到上述目的,本發(fā)明提供了一種發(fā)票二維碼生成方法,包括以下步驟:
[0008]根據(jù)發(fā)票二維碼生成區(qū)域的大小,計(jì)算發(fā)票二維碼所能存儲(chǔ)的最大數(shù)據(jù)量;
[0009]根據(jù)最大數(shù)據(jù)量提取發(fā)票關(guān)鍵信息,利用設(shè)定規(guī)則對(duì)發(fā)票關(guān)鍵信息進(jìn)行編碼,生成發(fā)票身份碼;
[0010]利用一加密算法及私鑰對(duì)發(fā)票身份碼進(jìn)行加密,生成二維碼密文;
[0011]在二維碼圖形生成模塊中設(shè)定一生成規(guī)則,將二維碼密文發(fā)送至二維碼圖形生成模塊,二維碼圖形生成模塊利用生成規(guī)則生成發(fā)票二維碼。
[0012]進(jìn)一步的,私鑰由認(rèn)證中心提供。
[0013]進(jìn)一步的,私鑰存放在USB (Universal Serial Bus,通用串行總線(xiàn))接口的硬件設(shè)備中。
[0014]進(jìn)一步的,發(fā)票關(guān)鍵信息包括以下至少一項(xiàng):發(fā)票代碼、發(fā)票號(hào)碼、發(fā)票金額、收款方納稅人識(shí)別號(hào)、付款方納稅人識(shí)別號(hào)、開(kāi)票人。
[0015]進(jìn)一步的,加密算法為非對(duì)稱(chēng)加密算法。
[0016]為達(dá)到上述目的,本發(fā)明還提供了一種發(fā)票二維碼驗(yàn)證方法,包括以下步驟:
[0017]利用二維碼掃描設(shè)備對(duì)發(fā)票二維碼進(jìn)行掃描,將掃描得到的發(fā)票二維碼信息發(fā)送至二維碼識(shí)讀模塊;
[0018]二維碼識(shí)讀模塊對(duì)發(fā)票二維碼信息進(jìn)行識(shí)讀,提取出二維碼密文;
[0019]利用一解密算法及數(shù)字證書(shū)對(duì)二維碼密文進(jìn)行解密,獲取發(fā)票身份碼;
[0020]利用設(shè)定規(guī)則對(duì)發(fā)票身份碼進(jìn)行解碼,獲取發(fā)票關(guān)鍵信息;
[0021]將發(fā)票關(guān)鍵信息與紙質(zhì)發(fā)票上的信息進(jìn)行一一核對(duì),若全部一致則證明該發(fā)票為真發(fā)票。
[0022]進(jìn)一步的,當(dāng)發(fā)票關(guān)鍵信息與紙質(zhì)發(fā)票上的信息不一致時(shí),證明該發(fā)票為假發(fā)票。
[0023]進(jìn)一步的,數(shù)字證書(shū)由認(rèn)證中心提供。
[0024]進(jìn)一步的,數(shù)字證書(shū)存放在本地或目錄服務(wù)器中。
[0025]本發(fā)明生成的發(fā)票二維碼具有防偽功能,保證了發(fā)票的真實(shí)性,適用于有保密及防偽要求的場(chǎng)合,同時(shí)提供了離線(xiàn)驗(yàn)證發(fā)票真?zhèn)蔚氖侄?,可有效打擊發(fā)票造假現(xiàn)象。
【附圖說(shuō)明】
[0026]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0027]圖1為本發(fā)明一個(gè)實(shí)施例的發(fā)票二維碼生成方法流程圖;
[0028]圖2為本發(fā)明一個(gè)實(shí)施例的發(fā)票二維碼驗(yàn)證方法流程圖。
【具體實(shí)施方式】
[0029]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0030]本發(fā)明提供的發(fā)票二維碼生成方法可用于生產(chǎn)商在銷(xiāo)售產(chǎn)品時(shí)為用戶(hù)提供防偽發(fā)票,圖1為本發(fā)明一個(gè)實(shí)施例的發(fā)票二維碼生成方法流程圖,如圖所示,該方法包括以下步驟:
[0031]SllO:根據(jù)發(fā)票二維碼生成區(qū)域的大小,計(jì)算發(fā)票二維碼所能存儲(chǔ)的最大數(shù)據(jù)量;
[0032]其中,發(fā)票二維碼所能存儲(chǔ)的最大數(shù)據(jù)量受到二維碼生成區(qū)域大小的限制,最大數(shù)據(jù)量一般以字節(jié)為單位。
[0033]S120:根據(jù)最大數(shù)據(jù)量提取發(fā)票關(guān)鍵信息,利用設(shè)定規(guī)則對(duì)發(fā)票關(guān)鍵信息進(jìn)行編碼,生成發(fā)票身份碼;
[0034]以2cm*2cm大小的二維碼區(qū)域?yàn)槔?,一般可選取發(fā)票代碼、發(fā)票號(hào)碼、發(fā)票金額、收款方納稅人識(shí)別號(hào)、付款方納稅人識(shí)別號(hào)、開(kāi)票人作為發(fā)票關(guān)鍵信息。在本實(shí)施例中,將提取出的發(fā)票關(guān)鍵信息發(fā)送至一編碼生成器,編碼生成器中預(yù)設(shè)有編碼規(guī)則,編碼生成器對(duì)發(fā)票關(guān)鍵信息進(jìn)行編碼,輸出發(fā)票身份碼。
[0035]S130:利用一加密算法及私鑰對(duì)發(fā)票身份碼進(jìn)行加密,生成二維碼密文;
[0036]其中,私鑰由認(rèn)證中心存放在USB接口的硬件設(shè)備中提供給生產(chǎn)商,一般可存儲(chǔ)在USB-Key中。對(duì)發(fā)票身份碼加密采用的加密算法為非對(duì)稱(chēng)加密算法