王鑫 張建新 周元釘
【摘 要】在社會(huì)發(fā)展的過(guò)程中,存在著眾多的社會(huì)問(wèn)題,其中盜版現(xiàn)象尤為猖獗。無(wú)論是文化傳播方面還是商品制造方面,盜版是如影隨形。盡管有關(guān)部門(mén)和相關(guān)法律法規(guī)在一定程度上對(duì)假冒偽劣行為采取了嚴(yán)厲打擊措施,但時(shí)至今日,盜版現(xiàn)象不僅沒(méi)有得到有效的根除,反而在非法暴利的驅(qū)使下,非法分子更是趨之若鶩,盜版行為更有日益漫延之勢(shì)。鑒于此種情況,借助現(xiàn)有的科技成果,設(shè)計(jì)一個(gè)具有哈希校驗(yàn)功能的防偽二維碼生成器,通過(guò)Hash函數(shù)對(duì)商品數(shù)據(jù)進(jìn)行數(shù)據(jù)摘要,生成一個(gè)有效二維碼。分析表明,該二維碼具有信息量廣、編譯碼準(zhǔn)確、加密機(jī)制、印刷成本低等的優(yōu)勢(shì),在實(shí)際應(yīng)用中可有效打擊假冒偽劣行為。
【關(guān)鍵詞】二維碼;哈希編碼;防偽印刷
中圖分類(lèi)號(hào): TP391.44;TB481 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2018)06-0189-004
【Abstract】In the process of social development,there are many social problems,in which piracy is the particularly serious phenomenon.Whether the cultural dissemination or commodity manufacturing,piracy is as the shadow follows with varieties of goods.Although the relevant departments,laws and regulations take tough measures to crack down on fake and shoddy behavior on a certain extent.But today,the phenomenon of piracy has not been eradicated. However, in driving illegal profiteering,illegal molecular piracy is popular;the piracy is more spreading trend.In view of this situation,a hash function security dimensional code generator is presented with the use of existing scientific and technological achievements.A two-dimensional code is generated on hash function through the data of the commodity data.The analysis shows that the QR code has extensive information,encryption mechanism,accurate and low cost advantages of printing.It can effectively combat counterfeiting behavior in practical application.
【Key words】QR code;Hash encoding;Anti-counterfeiting printing
0 引言
伴隨著國(guó)內(nèi)市場(chǎng)經(jīng)濟(jì)不斷發(fā)展,防偽技術(shù)在我國(guó)的發(fā)展也實(shí)現(xiàn)質(zhì)的飛躍。假冒、仿造等現(xiàn)象是與市場(chǎng)經(jīng)濟(jì)伴生的副產(chǎn)品,為了保護(hù)自身利益,防偽技術(shù)應(yīng)運(yùn)而生。由于版權(quán)所有者對(duì)產(chǎn)品防偽需求與意識(shí)的不斷強(qiáng)化,越來(lái)越多的防偽技術(shù)方案得到應(yīng)用和推廣,防偽技術(shù)市場(chǎng)呈現(xiàn)出百花齊放、百家爭(zhēng)鳴的新局面。
就標(biāo)簽市場(chǎng)而言,目前的防偽技術(shù)應(yīng)用主要體現(xiàn)在材料防偽、設(shè)計(jì)防偽、工藝防偽、IT防偽等方面,可分為以下三個(gè)階段。
(1)標(biāo)簽防偽的初級(jí)階段
標(biāo)簽防偽的初級(jí)階段是單一技術(shù)防偽。國(guó)內(nèi)標(biāo)簽印刷最早采用的防偽技術(shù),大多源自與人民幣相關(guān)的防偽技術(shù),包括防偽紙張、防偽設(shè)計(jì)、防偽油墨、防偽印刷等。其后,全息圖像等技術(shù)開(kāi)始進(jìn)入標(biāo)簽防偽領(lǐng)域。不過(guò)從技術(shù)應(yīng)用上看,最初的防偽大多采用單一技術(shù),即便是有組合應(yīng)用,也是相對(duì)簡(jiǎn)單的組合形式。
(2)標(biāo)簽防偽第二階段
標(biāo)簽防偽第二階段是印刷元素的組合式防偽。印刷組合式技術(shù)防偽最初的形式,是將已有的、印刷方面的多種防偽技術(shù),組合運(yùn)用到一個(gè)產(chǎn)品上。如,將防偽設(shè)計(jì)、防偽紙張、防偽油墨、乃至多種不同的印刷形式等,共同組合到一個(gè)產(chǎn)品標(biāo)簽上。防偽不再局限于某種防偽材料、單個(gè)防偽工藝,而是變得越來(lái)越復(fù)雜,成為由多種印刷工藝和防偽技術(shù)相融合,具有較高技術(shù)含量的綜合性防偽。這個(gè)理念其實(shí)就是人民幣防偽的理念,也是目前依然較為流行的防偽形式。
近年來(lái),隨著科學(xué)技術(shù)的發(fā)展,其他領(lǐng)域的某些科技成果被移植到標(biāo)簽防偽中,使標(biāo)簽防偽得以跨出印刷領(lǐng)域的范疇,開(kāi)始進(jìn)入又一個(gè)新的發(fā)展階段。
(3)標(biāo)簽防偽第三階段
標(biāo)簽防偽第三階段是跨界技術(shù)應(yīng)用。防偽行業(yè)是一個(gè)非常具有活力、善于吸收先進(jìn)技術(shù)的產(chǎn)業(yè)。很多技術(shù)一經(jīng)出現(xiàn),就被應(yīng)用到防偽領(lǐng)域。
以2014年度亞洲標(biāo)簽印制大獎(jiǎng)賽中獲得智能防偽類(lèi)金獎(jiǎng)的標(biāo)簽為例,這一產(chǎn)品就采用了多種防偽工藝,包括:防偽暗記、手感防偽及彩色可變二維碼與隱形可變碼對(duì)應(yīng),背面揭開(kāi)留底對(duì)應(yīng)正面的號(hào)碼,印刷工藝采用傳統(tǒng)凸版印刷與數(shù)碼印刷相結(jié)合,結(jié)合后道印刷工藝。單就這些印刷相關(guān)元素而言,這種標(biāo)簽具有個(gè)性化多重防偽的獨(dú)特性,不易被復(fù)制與仿冒,已經(jīng)將印刷組合技術(shù)發(fā)揮到極致。令其更上一層樓的是,這款標(biāo)簽還加入了納米顆粒進(jìn)行防偽,這是納米技術(shù)融入防偽標(biāo)簽的最好例證。
除了納米技術(shù),目前在標(biāo)簽防偽領(lǐng)域應(yīng)用的跨界技術(shù),還包括:核徑跡技術(shù);電話(huà)電碼技術(shù);DNA、聲紋識(shí)別、指紋識(shí)別、面部特征識(shí)別、人眼虹膜圖像識(shí)別等生物識(shí)別技術(shù);最新的跨界防偽則是印刷與IT技術(shù)的結(jié)合。
然而,商品的假冒偽劣現(xiàn)象由來(lái)已久,盡管各國(guó)都在一定程度上采取反盜版措施,以對(duì)盜版進(jìn)行打擊,但時(shí)至今日,假冒偽劣現(xiàn)象不僅沒(méi)有得到有效的根除,反而還有日益漫延之勢(shì)。究其原因,一方面對(duì)商品的有效鑒別機(jī)制還不完善,另一方面商品的流通監(jiān)管還存在漏洞,現(xiàn)有措施未能從根本上有效打擊假冒偽劣行為。
計(jì)算機(jī)與通信技術(shù)日趨成熟,將計(jì)算機(jī)技術(shù)與通訊技術(shù)應(yīng)用于假冒偽劣產(chǎn)品的打擊和監(jiān)管中,勢(shì)在必行。特別的,基于現(xiàn)有的二維碼技術(shù),有效鑒別商品真?zhèn)?,監(jiān)管物品整個(gè)流通過(guò)程,可有效確保商品真實(shí)、打擊假冒商品,然而,現(xiàn)有聲稱(chēng)的二維碼技術(shù)并不具備防偽功能,相關(guān)報(bào)告可見(jiàn)問(wèn)[1]。
本文,基于上述問(wèn)題,通過(guò)將MD5數(shù)字摘要技術(shù)結(jié)合于防偽標(biāo)簽生成器的設(shè)計(jì),基于現(xiàn)有印刷技術(shù),設(shè)計(jì)一種具有防偽功能的二維碼生成器。
1 系統(tǒng)主要軟件的介紹
1.1 開(kāi)發(fā)平臺(tái)eclipse
Eclipse是一個(gè)開(kāi)放源代碼的軟件開(kāi)發(fā)項(xiàng)目,專(zhuān)注于為高度集成的工具開(kāi)發(fā)提供一個(gè)全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺(tái)。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開(kāi)發(fā)、CDT支持C開(kāi)發(fā)、PDE用來(lái)支持插件開(kāi)發(fā),Eclipse Platform則是一個(gè)開(kāi)放的可擴(kuò)展IDE,提供了一個(gè)通用的開(kāi)發(fā)平臺(tái)。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開(kāi)發(fā)工具的基礎(chǔ)[2]。
1.2 MD5算法
MD5的全稱(chēng)是Message-Digest Algorithm 5(信息-摘要算法),它的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式(就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù))。需要獲得一個(gè)隨機(jī)長(zhǎng)度的信息并產(chǎn)生一個(gè)128位的信息摘要[3]。
MD5算法全名叫信息-摘要算法,是一種有密碼的算法,MD5算法可以對(duì)任何文件產(chǎn)生一個(gè)唯一的MD5驗(yàn)證碼,每個(gè)文件的MD5碼就如同每個(gè)人的指紋一樣,都是不同的,這樣,一旦這個(gè)文件在傳輸過(guò)程中,其內(nèi)容被損壞或者被修改的話(huà),那么這個(gè)文件的MD5碼就會(huì)發(fā)生變化,通過(guò)對(duì)文件MD5的驗(yàn)證,可以得知獲得的文件是否完整。
1.3 二維碼的編碼格式
本課題設(shè)計(jì)的二維碼的編碼格式是采用“UTF-8”編碼規(guī)則,具體規(guī)則如下:
UTF-8是Unicode的一種實(shí)現(xiàn)方式或者是一種具體的編碼格式,也就是對(duì)它的字節(jié)結(jié)構(gòu)有特殊要求,所以我們說(shuō)一個(gè)漢字的范圍是0X4E00-0x9FA5,是指Unicode值,至于放在utf-8的編碼里去就是由三個(gè)字節(jié)來(lái)組織,所以可以看出Unicode是給出一個(gè)字符的范圍,定義了這個(gè)字是碼值是多少,實(shí)現(xiàn)方式可以有多種多樣的編碼格式來(lái)完成[4]。
UTF-8是一種變長(zhǎng)字節(jié)編碼方式。對(duì)于某一個(gè)字符的UTF-8編碼,如果只有一個(gè)字節(jié)則其最高二進(jìn)制位為0;如果是多字節(jié),其第一個(gè)字節(jié)從最高位開(kāi)始,連續(xù)的二進(jìn)制位值為1的個(gè)數(shù)決定了其編碼的位數(shù),其余各字節(jié)均以10開(kāi)頭。UTF-8最多可用到6個(gè)字節(jié)。
從上述的編碼規(guī)則可以看出,UTF-8中可以用來(lái)表示字符編碼的實(shí)際位數(shù)最多有31位,即上表中x所表示的位。除去那些控制位(每字節(jié)開(kāi)頭的10等),這些x表示的位與Unicode編碼是一一對(duì)應(yīng)的,位高低順序也相同。實(shí)際中是將Unicode轉(zhuǎn)換為UTF-8編碼時(shí)應(yīng)先去除高位0,然后根據(jù)所剩編碼的位數(shù)決定所需最小的UTF-8編碼位數(shù)。
1.4 二維碼數(shù)據(jù)的設(shè)計(jì)
(1)產(chǎn)品ID號(hào)
產(chǎn)品ID號(hào)格式如:mm$$20160212****%%###+陜西省渭南市(最后在放6個(gè)漢字)總共位數(shù)是21位,編號(hào)容量有限,請(qǐng)不要考慮極端情況。
其各個(gè)符號(hào)所代表的意義。如表1所示:
表1 商品ID號(hào)的實(shí)際意義
注意:生產(chǎn)廠(chǎng)家代號(hào),本地?cái)?shù)據(jù)庫(kù)有一部分,遠(yuǎn)程數(shù)據(jù)庫(kù)全部存儲(chǔ)。
(2)本地密鑰
本地密鑰,分為固定部分+可變部分,總共為16位。
相關(guān)規(guī)定,如表2所示:
表2 本地密鑰相關(guān)規(guī)定
(3)遠(yuǎn)程密鑰
遠(yuǎn)程密鑰,分為固定部分+可變部分,總共32位。
相關(guān)規(guī)定,如表3所示:
表3 遠(yuǎn)程密鑰相關(guān)規(guī)定
可變部分為取月份的前三位英文字+13位隨機(jī)數(shù)。
(4)商品數(shù)據(jù)
對(duì)于商品ID號(hào)和密鑰的相關(guān)規(guī)定就如上述所說(shuō),在系統(tǒng)正常運(yùn)行的情況下,按照上面的標(biāo)準(zhǔn)和規(guī)則,實(shí)例生成了有關(guān)幾個(gè)生產(chǎn)廠(chǎng)家的數(shù)據(jù)信息,以下是幾個(gè)商品ID號(hào)、本地密鑰和遠(yuǎn)程密鑰。如表4所示:
表4 商品數(shù)據(jù)信息
2 系統(tǒng)程序設(shè)計(jì)
2.1 界面設(shè)計(jì)
本次畢業(yè)設(shè)計(jì)的圖形界面是采用Java應(yīng)用程序的圖形用戶(hù)界面(GUI),是由Java.awt、javax.swing等包中定義的組件類(lèi)對(duì)象組成的,依據(jù)面向?qū)ο髾C(jī)制,每個(gè)組件類(lèi)都封裝了該組件的屬性和行為。
GUI的組成:包括窗體(Frame)、對(duì)話(huà)框(Dialog)、面板(Panel)、按鈕(Button)、標(biāo)簽(Label)、畫(huà)板(Canves)、滾動(dòng)條(Scrollbar)、列表框(List)、文本域(TextField)、文本區(qū)(TextArea)、菜單(Menu)等組件,在本系統(tǒng)中主要用到窗體、面板、按鈕、標(biāo)簽、文本域等。面板布局采用邊界布局(BorderLayout)和網(wǎng)格布局(GridLayout)。同時(shí)還應(yīng)用到監(jiān)聽(tīng)事件,這只是針對(duì)按鈕的操作,產(chǎn)生一定的事件反應(yīng),已達(dá)到既定的效果[5]。
2.2 Hash函數(shù)摘要處理
Hash函數(shù)對(duì)數(shù)據(jù)信息的摘要處理,即MD5算法主要是對(duì)商品數(shù)據(jù)ID號(hào)進(jìn)行處理,通過(guò)HMAC公式進(jìn)行計(jì)算。因?yàn)镸D5算法是不可以從消息摘要中復(fù)原信息的,所以對(duì)密鑰是一種最好的保護(hù);產(chǎn)生兩個(gè)哈希值,并與商品ID號(hào)級(jí)聯(lián)得到的數(shù)據(jù),最后在該數(shù)據(jù)后面添加商品銷(xiāo)售地,用于區(qū)域防竄貨管理,增加造假者成本,最終得到商品防偽碼[6]。
2.3 二維碼的生成
本課題中二維碼的生成,首先構(gòu)建了二維碼的生成方法類(lèi)(MatrixToImageWriter),包括格式、大小、內(nèi)容等;然后在建立生成二維碼的類(lèi)(CodeCreator)中調(diào)用上面生成方法類(lèi),其中的數(shù)據(jù)來(lái)源于經(jīng)鍵盤(pán)的輸入,在經(jīng)過(guò)HMAC公式運(yùn)算,得到的哈希值(本地和遠(yuǎn)程摘要),將商品ID與兩個(gè)哈希值級(jí)聯(lián)后產(chǎn)生的結(jié)果(result),同時(shí)加上六個(gè)漢字的輸入,在程序中對(duì)漢字字符串做出了設(shè)置,以使?jié)h字?jǐn)?shù)據(jù)在二維碼中能夠顯示出來(lái)。最終生成的二維碼使用圖片格式保存在本地,在二維碼名稱(chēng)的動(dòng)態(tài)改動(dòng)下能夠連續(xù)生成而且不會(huì)被覆蓋,在軟件界面中二維碼顯示區(qū)能夠顯示生成的二維碼圖片,得益于Java中的窗體刷新程序,最終能夠在生成的同時(shí)顯示在界面的生成區(qū)域。
窗體刷新代碼:
public void updateView(String name){
if(label!=null){
frame.remove(panel3);
panel3.remove(label);}}
2.4 程序運(yùn)行結(jié)果
軟件運(yùn)行界面結(jié)果,如圖1所示:
舉以實(shí)例
產(chǎn)品ID號(hào):YQ0120160216000201180
本地密鑰:QCACsust*Win7802
遠(yuǎn)程密鑰:QCACSUSTremote#&Feb0041551204372;
銷(xiāo)售地點(diǎn):陜西省渭南市
運(yùn)行結(jié)果:
YQ0120160216000201180
afb8303aae1c5dc6a22ee3656e0336b8498e2d3f
e1b0b3c6e65b3f9e5a315d89b82314a66635d721陜西省渭南市
二維碼生成如圖2所示:
3 總結(jié)
本文通過(guò)對(duì)系統(tǒng)的分析研究,利用Java語(yǔ)言在軟件開(kāi)發(fā)平臺(tái)Eclipse的基礎(chǔ)上,設(shè)計(jì)一種基于MD5算法的具有防偽功能的標(biāo)簽并進(jìn)行了實(shí)驗(yàn)系統(tǒng)的開(kāi)發(fā)。首先,將數(shù)據(jù)信息進(jìn)行編碼生成二維碼,數(shù)據(jù)信息就是商品相關(guān)信息數(shù)據(jù),這是整個(gè)過(guò)程的第一步,然后對(duì)數(shù)據(jù)進(jìn)行Hash函數(shù)摘要處理,最終得到的是信息數(shù)據(jù)的哈希值,然而,商品的原始數(shù)據(jù)是不會(huì)顯示出來(lái)的,只有通過(guò)掃碼儀器進(jìn)行掃描可以得到商品的原始數(shù)據(jù),并且可以知道商品的真假,當(dāng)然,不是所有的掃碼儀器都可以得到商品的信息,這款掃碼儀器必須含有相同的Hash算法、商品的信息格式設(shè)置、掃描上限次數(shù),等等。與此同時(shí),可以對(duì)密鑰進(jìn)行加密,即使展現(xiàn)在用戶(hù)面前也是進(jìn)行加密后的密鑰,可以杜絕密鑰的泄露帶來(lái)的不必要的麻煩。最終,得到實(shí)現(xiàn)具有防偽功能的二維碼。
在程序設(shè)計(jì)過(guò)程中,首先設(shè)計(jì)Java應(yīng)用程序的圖形用戶(hù)界面(GUI),然后在軟件的運(yùn)行界面進(jìn)行編寫(xiě)和調(diào)試,最終完成并呈現(xiàn)整個(gè)運(yùn)行界面;在二維碼的生成時(shí),采用調(diào)用類(lèi)的方法,首先編寫(xiě)二維碼的生成方法,然后在構(gòu)建新的二維碼類(lèi)中調(diào)用上述方法;最后,通過(guò)加密算法的嵌入,與鍵入數(shù)據(jù)聯(lián)系起來(lái)進(jìn)行級(jí)聯(lián)得到最終二維碼形式的防偽驗(yàn)證碼的設(shè)計(jì)。
【參考文獻(xiàn)】
[1]二維碼防偽靠譜不靠譜?[J].中國(guó)防偽報(bào)道,2014:30-32.
[2]David Gallardo.Eclipse平臺(tái)入門(mén)[EB/OL].http://www-900.ibm.com/DeveloperWorks/cn/linux/open-source/os-ecov/index.Shtml,2004.1.
[3]廖東方.二維碼電子標(biāo)簽的安全技術(shù)研究[D].北京:北京郵電大學(xué),2008.
[4]嚴(yán)蔚敏.《數(shù)據(jù)結(jié)構(gòu)與算法分析》.清華大學(xué)出版社,2011.
[5]孫一林,彭波.Java程序設(shè)計(jì)案例教程.機(jī)械工業(yè)出版社,2011.1.
[6]王明振.QR碼在Android手機(jī)平臺(tái)的解碼算法研究[D].鄭州:鄭州大學(xué),2011.