王鑫 張建新 周元釘
【摘 要】在社會發(fā)展的過程中,存在著眾多的社會問題,其中盜版現(xiàn)象尤為猖獗。無論是文化傳播方面還是商品制造方面,盜版是如影隨形。盡管有關(guān)部門和相關(guān)法律法規(guī)在一定程度上對假冒偽劣行為采取了嚴(yán)厲打擊措施,但時至今日,盜版現(xiàn)象不僅沒有得到有效的根除,反而在非法暴利的驅(qū)使下,非法分子更是趨之若鶩,盜版行為更有日益漫延之勢。鑒于此種情況,借助現(xiàn)有的科技成果,設(shè)計一個具有哈希校驗(yàn)功能的防偽二維碼生成器,通過Hash函數(shù)對商品數(shù)據(jù)進(jìn)行數(shù)據(jù)摘要,生成一個有效二維碼。分析表明,該二維碼具有信息量廣、編譯碼準(zhǔn)確、加密機(jī)制、印刷成本低等的優(yōu)勢,在實(shí)際應(yīng)用中可有效打擊假冒偽劣行為。
【關(guān)鍵詞】二維碼;哈希編碼;防偽印刷
中圖分類號: TP391.44;TB481 文獻(xiàn)標(biāo)識碼: A 文章編號: 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 引言
伴隨著國內(nèi)市場經(jīng)濟(jì)不斷發(fā)展,防偽技術(shù)在我國的發(fā)展也實(shí)現(xiàn)質(zhì)的飛躍。假冒、仿造等現(xiàn)象是與市場經(jīng)濟(jì)伴生的副產(chǎn)品,為了保護(hù)自身利益,防偽技術(shù)應(yīng)運(yùn)而生。由于版權(quán)所有者對產(chǎn)品防偽需求與意識的不斷強(qiáng)化,越來越多的防偽技術(shù)方案得到應(yīng)用和推廣,防偽技術(shù)市場呈現(xiàn)出百花齊放、百家爭鳴的新局面。
就標(biāo)簽市場而言,目前的防偽技術(shù)應(yīng)用主要體現(xiàn)在材料防偽、設(shè)計防偽、工藝防偽、IT防偽等方面,可分為以下三個階段。
(1)標(biāo)簽防偽的初級階段
標(biāo)簽防偽的初級階段是單一技術(shù)防偽。國內(nèi)標(biāo)簽印刷最早采用的防偽技術(shù),大多源自與人民幣相關(guān)的防偽技術(shù),包括防偽紙張、防偽設(shè)計、防偽油墨、防偽印刷等。其后,全息圖像等技術(shù)開始進(jìn)入標(biāo)簽防偽領(lǐng)域。不過從技術(shù)應(yīng)用上看,最初的防偽大多采用單一技術(shù),即便是有組合應(yīng)用,也是相對簡單的組合形式。
(2)標(biāo)簽防偽第二階段
標(biāo)簽防偽第二階段是印刷元素的組合式防偽。印刷組合式技術(shù)防偽最初的形式,是將已有的、印刷方面的多種防偽技術(shù),組合運(yùn)用到一個產(chǎn)品上。如,將防偽設(shè)計、防偽紙張、防偽油墨、乃至多種不同的印刷形式等,共同組合到一個產(chǎn)品標(biāo)簽上。防偽不再局限于某種防偽材料、單個防偽工藝,而是變得越來越復(fù)雜,成為由多種印刷工藝和防偽技術(shù)相融合,具有較高技術(shù)含量的綜合性防偽。這個理念其實(shí)就是人民幣防偽的理念,也是目前依然較為流行的防偽形式。
近年來,隨著科學(xué)技術(shù)的發(fā)展,其他領(lǐng)域的某些科技成果被移植到標(biāo)簽防偽中,使標(biāo)簽防偽得以跨出印刷領(lǐng)域的范疇,開始進(jìn)入又一個新的發(fā)展階段。
(3)標(biāo)簽防偽第三階段
標(biāo)簽防偽第三階段是跨界技術(shù)應(yīng)用。防偽行業(yè)是一個非常具有活力、善于吸收先進(jìn)技術(shù)的產(chǎn)業(yè)。很多技術(shù)一經(jīng)出現(xiàn),就被應(yīng)用到防偽領(lǐng)域。
以2014年度亞洲標(biāo)簽印制大獎賽中獲得智能防偽類金獎的標(biāo)簽為例,這一產(chǎn)品就采用了多種防偽工藝,包括:防偽暗記、手感防偽及彩色可變二維碼與隱形可變碼對應(yīng),背面揭開留底對應(yīng)正面的號碼,印刷工藝采用傳統(tǒng)凸版印刷與數(shù)碼印刷相結(jié)合,結(jié)合后道印刷工藝。單就這些印刷相關(guān)元素而言,這種標(biāo)簽具有個性化多重防偽的獨(dú)特性,不易被復(fù)制與仿冒,已經(jīng)將印刷組合技術(shù)發(fā)揮到極致。令其更上一層樓的是,這款標(biāo)簽還加入了納米顆粒進(jìn)行防偽,這是納米技術(shù)融入防偽標(biāo)簽的最好例證。
除了納米技術(shù),目前在標(biāo)簽防偽領(lǐng)域應(yīng)用的跨界技術(shù),還包括:核徑跡技術(shù);電話電碼技術(shù);DNA、聲紋識別、指紋識別、面部特征識別、人眼虹膜圖像識別等生物識別技術(shù);最新的跨界防偽則是印刷與IT技術(shù)的結(jié)合。
然而,商品的假冒偽劣現(xiàn)象由來已久,盡管各國都在一定程度上采取反盜版措施,以對盜版進(jìn)行打擊,但時至今日,假冒偽劣現(xiàn)象不僅沒有得到有效的根除,反而還有日益漫延之勢。究其原因,一方面對商品的有效鑒別機(jī)制還不完善,另一方面商品的流通監(jiān)管還存在漏洞,現(xiàn)有措施未能從根本上有效打擊假冒偽劣行為。
計算機(jī)與通信技術(shù)日趨成熟,將計算機(jī)技術(shù)與通訊技術(shù)應(yīng)用于假冒偽劣產(chǎn)品的打擊和監(jiān)管中,勢在必行。特別的,基于現(xiàn)有的二維碼技術(shù),有效鑒別商品真?zhèn)?,監(jiān)管物品整個流通過程,可有效確保商品真實(shí)、打擊假冒商品,然而,現(xiàn)有聲稱的二維碼技術(shù)并不具備防偽功能,相關(guān)報告可見問[1]。
本文,基于上述問題,通過將MD5數(shù)字摘要技術(shù)結(jié)合于防偽標(biāo)簽生成器的設(shè)計,基于現(xiàn)有印刷技術(shù),設(shè)計一種具有防偽功能的二維碼生成器。
1 系統(tǒng)主要軟件的介紹
1.1 開發(fā)平臺eclipse
Eclipse是一個開放源代碼的軟件開發(fā)項(xiàng)目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個項(xiàng)目組成,具體包括四個部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴(kuò)展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)[2]。
1.2 MD5算法
MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),它的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的大整數(shù))。需要獲得一個隨機(jī)長度的信息并產(chǎn)生一個128位的信息摘要[3]。
MD5算法全名叫信息-摘要算法,是一種有密碼的算法,MD5算法可以對任何文件產(chǎn)生一個唯一的MD5驗(yàn)證碼,每個文件的MD5碼就如同每個人的指紋一樣,都是不同的,這樣,一旦這個文件在傳輸過程中,其內(nèi)容被損壞或者被修改的話,那么這個文件的MD5碼就會發(fā)生變化,通過對文件MD5的驗(yàn)證,可以得知獲得的文件是否完整。
1.3 二維碼的編碼格式
本課題設(shè)計的二維碼的編碼格式是采用“UTF-8”編碼規(guī)則,具體規(guī)則如下:
UTF-8是Unicode的一種實(shí)現(xiàn)方式或者是一種具體的編碼格式,也就是對它的字節(jié)結(jié)構(gòu)有特殊要求,所以我們說一個漢字的范圍是0X4E00-0x9FA5,是指Unicode值,至于放在utf-8的編碼里去就是由三個字節(jié)來組織,所以可以看出Unicode是給出一個字符的范圍,定義了這個字是碼值是多少,實(shí)現(xiàn)方式可以有多種多樣的編碼格式來完成[4]。
UTF-8是一種變長字節(jié)編碼方式。對于某一個字符的UTF-8編碼,如果只有一個字節(jié)則其最高二進(jìn)制位為0;如果是多字節(jié),其第一個字節(jié)從最高位開始,連續(xù)的二進(jìn)制位值為1的個數(shù)決定了其編碼的位數(shù),其余各字節(jié)均以10開頭。UTF-8最多可用到6個字節(jié)。
從上述的編碼規(guī)則可以看出,UTF-8中可以用來表示字符編碼的實(shí)際位數(shù)最多有31位,即上表中x所表示的位。除去那些控制位(每字節(jié)開頭的10等),這些x表示的位與Unicode編碼是一一對應(yīng)的,位高低順序也相同。實(shí)際中是將Unicode轉(zhuǎn)換為UTF-8編碼時應(yīng)先去除高位0,然后根據(jù)所剩編碼的位數(shù)決定所需最小的UTF-8編碼位數(shù)。
1.4 二維碼數(shù)據(jù)的設(shè)計
(1)產(chǎn)品ID號
產(chǎn)品ID號格式如:mm$$20160212****%%###+陜西省渭南市(最后在放6個漢字)總共位數(shù)是21位,編號容量有限,請不要考慮極端情況。
其各個符號所代表的意義。如表1所示:
表1 商品ID號的實(shí)際意義
注意:生產(chǎn)廠家代號,本地數(shù)據(jù)庫有一部分,遠(yuǎn)程數(shù)據(jù)庫全部存儲。
(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ù)
對于商品ID號和密鑰的相關(guān)規(guī)定就如上述所說,在系統(tǒng)正常運(yùn)行的情況下,按照上面的標(biāo)準(zhǔn)和規(guī)則,實(shí)例生成了有關(guān)幾個生產(chǎn)廠家的數(shù)據(jù)信息,以下是幾個商品ID號、本地密鑰和遠(yuǎn)程密鑰。如表4所示:
表4 商品數(shù)據(jù)信息
2 系統(tǒng)程序設(shè)計
2.1 界面設(shè)計
本次畢業(yè)設(shè)計的圖形界面是采用Java應(yīng)用程序的圖形用戶界面(GUI),是由Java.awt、javax.swing等包中定義的組件類對象組成的,依據(jù)面向?qū)ο髾C(jī)制,每個組件類都封裝了該組件的屬性和行為。
GUI的組成:包括窗體(Frame)、對話框(Dialog)、面板(Panel)、按鈕(Button)、標(biāo)簽(Label)、畫板(Canves)、滾動條(Scrollbar)、列表框(List)、文本域(TextField)、文本區(qū)(TextArea)、菜單(Menu)等組件,在本系統(tǒng)中主要用到窗體、面板、按鈕、標(biāo)簽、文本域等。面板布局采用邊界布局(BorderLayout)和網(wǎng)格布局(GridLayout)。同時還應(yīng)用到監(jiān)聽事件,這只是針對按鈕的操作,產(chǎn)生一定的事件反應(yīng),已達(dá)到既定的效果[5]。
2.2 Hash函數(shù)摘要處理
Hash函數(shù)對數(shù)據(jù)信息的摘要處理,即MD5算法主要是對商品數(shù)據(jù)ID號進(jìn)行處理,通過HMAC公式進(jìn)行計算。因?yàn)镸D5算法是不可以從消息摘要中復(fù)原信息的,所以對密鑰是一種最好的保護(hù);產(chǎn)生兩個哈希值,并與商品ID號級聯(lián)得到的數(shù)據(jù),最后在該數(shù)據(jù)后面添加商品銷售地,用于區(qū)域防竄貨管理,增加造假者成本,最終得到商品防偽碼[6]。
2.3 二維碼的生成
本課題中二維碼的生成,首先構(gòu)建了二維碼的生成方法類(MatrixToImageWriter),包括格式、大小、內(nèi)容等;然后在建立生成二維碼的類(CodeCreator)中調(diào)用上面生成方法類,其中的數(shù)據(jù)來源于經(jīng)鍵盤的輸入,在經(jīng)過HMAC公式運(yùn)算,得到的哈希值(本地和遠(yuǎn)程摘要),將商品ID與兩個哈希值級聯(lián)后產(chǎn)生的結(jié)果(result),同時加上六個漢字的輸入,在程序中對漢字字符串做出了設(shè)置,以使?jié)h字?jǐn)?shù)據(jù)在二維碼中能夠顯示出來。最終生成的二維碼使用圖片格式保存在本地,在二維碼名稱的動態(tài)改動下能夠連續(xù)生成而且不會被覆蓋,在軟件界面中二維碼顯示區(qū)能夠顯示生成的二維碼圖片,得益于Java中的窗體刷新程序,最終能夠在生成的同時顯示在界面的生成區(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號:YQ0120160216000201180
本地密鑰:QCACsust*Win7802
遠(yuǎn)程密鑰:QCACSUSTremote#&Feb0041551204372;
銷售地點(diǎn):陜西省渭南市
運(yùn)行結(jié)果:
YQ0120160216000201180
afb8303aae1c5dc6a22ee3656e0336b8498e2d3f
e1b0b3c6e65b3f9e5a315d89b82314a66635d721陜西省渭南市
二維碼生成如圖2所示:
3 總結(jié)
本文通過對系統(tǒng)的分析研究,利用Java語言在軟件開發(fā)平臺Eclipse的基礎(chǔ)上,設(shè)計一種基于MD5算法的具有防偽功能的標(biāo)簽并進(jìn)行了實(shí)驗(yàn)系統(tǒng)的開發(fā)。首先,將數(shù)據(jù)信息進(jìn)行編碼生成二維碼,數(shù)據(jù)信息就是商品相關(guān)信息數(shù)據(jù),這是整個過程的第一步,然后對數(shù)據(jù)進(jìn)行Hash函數(shù)摘要處理,最終得到的是信息數(shù)據(jù)的哈希值,然而,商品的原始數(shù)據(jù)是不會顯示出來的,只有通過掃碼儀器進(jìn)行掃描可以得到商品的原始數(shù)據(jù),并且可以知道商品的真假,當(dāng)然,不是所有的掃碼儀器都可以得到商品的信息,這款掃碼儀器必須含有相同的Hash算法、商品的信息格式設(shè)置、掃描上限次數(shù),等等。與此同時,可以對密鑰進(jìn)行加密,即使展現(xiàn)在用戶面前也是進(jìn)行加密后的密鑰,可以杜絕密鑰的泄露帶來的不必要的麻煩。最終,得到實(shí)現(xiàn)具有防偽功能的二維碼。
在程序設(shè)計過程中,首先設(shè)計Java應(yīng)用程序的圖形用戶界面(GUI),然后在軟件的運(yùn)行界面進(jìn)行編寫和調(diào)試,最終完成并呈現(xiàn)整個運(yùn)行界面;在二維碼的生成時,采用調(diào)用類的方法,首先編寫二維碼的生成方法,然后在構(gòu)建新的二維碼類中調(diào)用上述方法;最后,通過加密算法的嵌入,與鍵入數(shù)據(jù)聯(lián)系起來進(jìn)行級聯(lián)得到最終二維碼形式的防偽驗(yàn)證碼的設(shè)計。
【參考文獻(xiàn)】
[1]二維碼防偽靠譜不靠譜?[J].中國防偽報道,2014:30-32.
[2]David Gallardo.Eclipse平臺入門[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ī)械工業(yè)出版社,2011.1.
[6]王明振.QR碼在Android手機(jī)平臺的解碼算法研究[D].鄭州:鄭州大學(xué),2011.