一種可實(shí)現(xiàn)自我驗(yàn)證的多碼關(guān)聯(lián)編碼方法及解碼方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種可以實(shí)現(xiàn)自我驗(yàn)證,擺脫數(shù)據(jù)庫依賴的多碼關(guān)聯(lián)編碼方法,同時(shí) 也涉及相應(yīng)的多碼關(guān)聯(lián)解碼方法,屬于防偽鑒偽技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 當(dāng)前,隨著智能終端(智能手機(jī)、平板電腦等)的廣泛使用,安裝在智能終端上的二 維碼應(yīng)用軟件也日益普及。人們先后提出了多種利用二維碼進(jìn)行商品防偽、積分營(yíng)銷、產(chǎn)品 溯源、防竄貨等方面的解決方案。
[0003] 在現(xiàn)有的二維碼解決方案中,主要通過單一的數(shù)字、字母、條形碼或二維碼來標(biāo)識(shí) 商品,從而實(shí)現(xiàn)對(duì)商品走向的管理和查詢。在實(shí)踐中,人們逐漸認(rèn)識(shí)到采用單一編碼方案并 不能完全解決商品在市場(chǎng)營(yíng)銷、防竄貨等方面所遇到的問題。因此,采用明碼和暗碼相結(jié)合 的二維碼應(yīng)用方案開始應(yīng)運(yùn)而生。在這些二維碼應(yīng)用方案中,明碼在商品包裝外面就能看 到,暗碼隱藏在商品包裝里面,只有破壞商品包裝后才能看到。無論是明碼還是暗碼,都可 以用二維碼或字符串來表示,并可以通過智能終端或?qū)S米R(shí)讀設(shè)備進(jìn)行識(shí)別。其中,明碼的 用途主要是防竄貨、物流管理、產(chǎn)品溯源等;暗碼的用途主要是積分營(yíng)銷、抽獎(jiǎng)、防偽鑒偽 等。在這些二維碼應(yīng)用方案中,都要求明碼和暗碼相互關(guān)聯(lián),也就是說通過明碼能夠得知相 應(yīng)的暗碼,反之也成立,明碼和暗碼之間是一一對(duì)應(yīng)關(guān)系。
[0004] 為了確保實(shí)現(xiàn)明碼和暗碼的一一對(duì)應(yīng)關(guān)系,通常在明碼和暗碼生成時(shí)就一一對(duì)應(yīng) 好,并記錄到數(shù)據(jù)庫中。在商品生產(chǎn)時(shí),按對(duì)應(yīng)好的編碼對(duì)商品進(jìn)行賦碼。由于賦碼設(shè)備在 生產(chǎn)時(shí)可能存在對(duì)應(yīng)關(guān)系錯(cuò)亂的情況,因此,需要由讀碼檢測(cè)設(shè)備進(jìn)行檢測(cè)驗(yàn)證。目前,這 種檢測(cè)驗(yàn)證主要采用讀碼檢測(cè)設(shè)備分別讀取商品上的明碼和暗碼,然后把明碼和暗碼發(fā)送 到數(shù)據(jù)庫中驗(yàn)證其關(guān)聯(lián)性。如果這兩個(gè)碼不關(guān)聯(lián),則作為廢品做剔除處理。但是,利用數(shù)據(jù) 庫進(jìn)行驗(yàn)證存在數(shù)據(jù)量較大時(shí)驗(yàn)證速度無法滿足要求的情況。而如果將待驗(yàn)證數(shù)據(jù)按批次 分割,則存在不同批次混裝時(shí)無法檢測(cè)驗(yàn)證的問題,同時(shí)顯著增加生產(chǎn)工藝的復(fù)雜度和生 產(chǎn)成本。
[0005] 另外,在專利號(hào)為ZL201010154252.1的中國(guó)發(fā)明專利中,公開了一種基于可識(shí)讀 標(biāo)識(shí)碼與其應(yīng)答碼的防偽方法,包括以下步驟:(1)用閱讀器來讀取設(shè)于待驗(yàn)證商品上的可 識(shí)讀標(biāo)識(shí)碼信息;(2)判斷閱讀器是否能夠識(shí)別所讀取的可識(shí)讀標(biāo)識(shí)碼信息,若判斷為否, 則該待驗(yàn)證商品為仿品;若判斷為是,則解讀該可識(shí)讀標(biāo)識(shí)碼所標(biāo)示的信息;(3)根據(jù)所解 讀待驗(yàn)證商品可識(shí)讀標(biāo)識(shí)碼所標(biāo)示的信息來判斷是否付款購買該待驗(yàn)證商品,若判斷為 否,則結(jié)束該待驗(yàn)證商品的防偽驗(yàn)證;若是判斷為是,則需通過銷售端支付購買該待驗(yàn)證商 品的銷售費(fèi)用,付款完畢后,系統(tǒng)自動(dòng)通過網(wǎng)絡(luò)向服務(wù)器發(fā)送所讀取可識(shí)讀標(biāo)識(shí)碼的驗(yàn)證 請(qǐng)求;(4)服務(wù)器根據(jù)所輸入的可識(shí)讀標(biāo)識(shí)碼的驗(yàn)證請(qǐng)求調(diào)用數(shù)據(jù)庫中該可識(shí)讀標(biāo)識(shí)碼所 唯一對(duì)應(yīng)的應(yīng)答碼信息,確認(rèn)打印提交后,可識(shí)讀標(biāo)識(shí)碼信息和應(yīng)答碼信息方可被同時(shí)打 印、顯示出來,服務(wù)器自動(dòng)從數(shù)據(jù)庫中清除該可識(shí)讀標(biāo)識(shí)碼信息及其所唯一對(duì)應(yīng)的應(yīng)答碼 信息;(5)開啟設(shè)于待驗(yàn)證商品體表的可識(shí)讀標(biāo)識(shí)碼層下面的涂覆層,顯現(xiàn)預(yù)設(shè)應(yīng)答碼信 息;(6)將服務(wù)器傳送回來的應(yīng)答碼信息與預(yù)設(shè)應(yīng)答碼信息進(jìn)行比對(duì),若是兩者信息不一 致,則判斷待驗(yàn)證商品為仿品;若是兩者信息一致,則判斷待驗(yàn)證商品為真品。
[0006] 但是,在上述防偽方法中,可識(shí)讀標(biāo)識(shí)碼(陽碼)與其應(yīng)答碼(陰碼)之間是無規(guī)則 的隨機(jī)對(duì)應(yīng)關(guān)系。換句話說,通過明碼不可能解析出陰碼,通過陰碼也不可能解析出明碼。 這樣,在用戶對(duì)商品身份進(jìn)行識(shí)別時(shí),用戶輸入明碼后必須通過預(yù)先存有陰碼數(shù)據(jù)的后臺(tái) 服務(wù)器的支持才有可能獲得陰碼的內(nèi)容,從而對(duì)物品身份進(jìn)行驗(yàn)證。如果離開了后臺(tái)服務(wù) 器的支持,這種防偽驗(yàn)證方法將完全不可行。
【發(fā)明內(nèi)容】
[0007] 針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明所解決的首要技術(shù)問題在于提供一種可實(shí)現(xiàn)自我驗(yàn) 證的多碼關(guān)聯(lián)編碼方法。
[0008] 本發(fā)明所解決的另一個(gè)技術(shù)問題在于提供一種可實(shí)現(xiàn)自我驗(yàn)證的多碼關(guān)聯(lián)解碼 方法。
[0009] 為實(shí)現(xiàn)上述的發(fā)明目的,本發(fā)明采用下述的技術(shù)方案:
[0010] -種多碼關(guān)聯(lián)編碼方法,其中在生成多組編碼時(shí),對(duì)于每一組中的多個(gè)編碼,首先 在各編碼中的預(yù)定位置設(shè)置各編碼共同使用的驗(yàn)證因子,然后分別對(duì)每個(gè)編碼賦予彼此不 重復(fù)的編碼數(shù)據(jù)。
[0011] 其中較優(yōu)地,在生成多組編碼時(shí),各組中使用的驗(yàn)證因子之間是順序關(guān)系。
[0012] 其中較優(yōu)地,在生成多組編碼時(shí),各組中使用的驗(yàn)證因子之間是隨機(jī)關(guān)系。
[0013] 其中較優(yōu)地,所述編碼生成后進(jìn)行加密和變換,轉(zhuǎn)換為便于智能終端識(shí)讀的二維 碼。
[0014] -種多碼關(guān)聯(lián)解碼方法,其中對(duì)于一組中的多個(gè)編碼,分別從各編碼中的預(yù)定位 置提取該編碼中的驗(yàn)證因子;如果各編碼中的所述驗(yàn)證因子相同,則認(rèn)為各編碼之間存在 關(guān)聯(lián)關(guān)系;否則對(duì)該組編碼做剔除處理。
[0015] 其中較優(yōu)地,在提取所述驗(yàn)證因子時(shí),首先進(jìn)行解密和反變換處理。
[0016] 其中較優(yōu)地,所述預(yù)定位置為各編碼的首端或尾端或第N位數(shù)據(jù)處,其中N為正整 數(shù)。
[0017] 其中較優(yōu)地,所述驗(yàn)證因子通過預(yù)置算法打散分布在所述編碼中。
[0018] 其中較優(yōu)地,所述驗(yàn)證因子是由數(shù)字、字母或字母數(shù)字混合等方式組成的字符串。
[0019] 其中較優(yōu)地,所述編碼數(shù)據(jù)是由數(shù)字、字母或字母數(shù)字混合等方式組成的字符串。
[0020] 與現(xiàn)有技術(shù)相比較,本發(fā)明所提供的多碼關(guān)聯(lián)編碼方法及解碼方法可以通過編碼 本身來驗(yàn)證明碼和暗碼(或同一組中的多個(gè)相互關(guān)聯(lián)的編碼)是否關(guān)聯(lián),而不需要通過后臺(tái) 數(shù)據(jù)庫驗(yàn)證其關(guān)聯(lián)性。這種編解碼方法徹底擺脫了對(duì)數(shù)據(jù)庫資源的依賴,解碼驗(yàn)證速度快, 跟數(shù)據(jù)量的大小無關(guān),應(yīng)用前景十分廣闊。
【附圖說明】
[0021] 圖1為明碼與暗碼之間關(guān)聯(lián)關(guān)系的示意圖;
[0022] 圖2為同一組中的多個(gè)編碼之間關(guān)聯(lián)關(guān)系的示意圖。
【具體實(shí)施方式】
[0023] 下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)內(nèi)容做進(jìn)一步的詳細(xì)說明。
[0024] 首先,對(duì)本發(fā)明所提供的多碼關(guān)聯(lián)編碼方法及解碼方法中使用的一些概念進(jìn)行說 明:
[0025] 順序數(shù):按預(yù)定順序生成的字符串,可以由字母或數(shù)字組成,例如001、002、003等; AAA、AAB、AAC 等。
[0026] 隨機(jī)數(shù):隨機(jī)生成的字符串,可以由字母或數(shù)字組成,例如237、786、678等;HED、 UYT、I0P 等。
[0027] 編碼數(shù)據(jù):由數(shù)字、字母或字母數(shù)字混合等方式組成的字符串,其組成方式可以是 隨機(jī)數(shù)、順序數(shù)或隨機(jī)數(shù)加順序數(shù),或其他加密方式生成的數(shù)據(jù)。其生成的目的是不重復(fù), 基本沒有可能被人為猜中。
[0028] 驗(yàn)證因子:由數(shù)字、字母或字母數(shù)字混合等方式組成的字符串。在實(shí)踐中,根據(jù)編 碼數(shù)據(jù)的容量等要求,可以靈活選擇驗(yàn)證因子的編碼方式。為了提高驗(yàn)證的有效性,驗(yàn)證因 子通常需要3位數(shù)據(jù)以上。該驗(yàn)證因子可以是順序生成,也可以是隨機(jī)生成或其他方式生 成。
[0029] 下面,以生成明碼和暗碼為例說明本發(fā)明所提供的多碼關(guān)聯(lián)編碼方法的具體實(shí)現(xiàn) 過程。為了實(shí)現(xiàn)明碼與暗碼之間相互驗(yàn)證,徹底擺脫對(duì)數(shù)據(jù)庫的依賴,在明碼與暗碼之間存 在如圖1所示的關(guān)聯(lián)關(guān)系,即無論是明碼還是暗碼,每個(gè)編碼均由獨(dú)立設(shè)置的編碼數(shù)據(jù)和共 同使用的驗(yàn)證因子組成,其中驗(yàn)證因子的位置是固定的,例如統(tǒng)一設(shè)置在編碼首端/尾端或 第N(N為正整數(shù),下同)位數(shù)據(jù)處,以便在解碼驗(yàn)證時(shí)快速獲取該驗(yàn)證因子的內(nèi)容。在本發(fā)明 的其它實(shí)施例中,該驗(yàn)證因子也可以通過預(yù)置算法打散分布在編碼中,從而提高從編碼中 恢復(fù)該驗(yàn)證因子的難度。在相應(yīng)的解碼過程中,如果事先不知道相應(yīng)的預(yù)置算法,則解碼難 度將大大增加。通過該驗(yàn)證因子,可以實(shí)現(xiàn)這些編碼在編碼過程中具有相互關(guān)聯(lián)的數(shù)學(xué)基 礎(chǔ);在解碼過程中通過該驗(yàn)證因子是否存在,可以有效檢測(cè)明碼和暗碼之間是否存在一一 對(duì)應(yīng)的關(guān)聯(lián)關(guān)系。下面對(duì)此展開進(jìn)一步的說明。
[0030] 在本發(fā)明的一個(gè)實(shí)施例中,假設(shè)明碼由6位的大寫字母順序數(shù)和3位驗(yàn)證因子組 成,暗碼由6位大寫字母組成的順序數(shù)、6位大寫字母組成的隨機(jī)數(shù)和3位驗(yàn)證因子組成,其 中驗(yàn)證因子使用3位大寫字母的順序數(shù)方式。當(dāng)需要生成多組明碼和暗碼時(shí),首先要生成一 個(gè)驗(yàn)證因子,例如字符串AAA ;然后生成第一組明碼如AAAAAAAAA、第一組暗碼如 AAAAAAUNHTFHAAA;循環(huán)以上過程以生成第二組~第N組明碼和暗碼。當(dāng)生成第二組明碼和 暗碼時(shí),假設(shè)順序生成的驗(yàn)證因子為AAB,依此類推,逐條生成多組相互關(guān)聯(lián)的明碼和暗碼, 如下表1所示。其中下劃線處的字符串即為該組編碼中使用的驗(yàn)證因子。需要說明的是,上 述第一組、第二組~第N組中的驗(yàn)證因子之間可以是順序關(guān)系,也可以是毫無聯(lián)系的隨機(jī)關(guān) 系。
[0032] 表1多組相互關(guān)聯(lián)的明碼和暗碼編碼表示例
[0033] 表1中所示的明碼和暗碼中的數(shù)據(jù)內(nèi)容僅為舉例說明。在實(shí)際應(yīng)用的場(chǎng)合中,上述 明碼和暗碼均可根據(jù)實(shí)際需要進(jìn)行加密和變換,例如轉(zhuǎn)換為便于智能終端識(shí)讀的二維碼 等。在進(jìn)行加密和變換后,明碼和暗碼之間的關(guān)聯(lián)性用裸眼是看不出來的。這種加密和變換 是本領(lǐng)域技術(shù)人員的常規(guī)技術(shù)手段,在此就不具體說明了。
[0034] 本發(fā)明所提供的多碼關(guān)聯(lián)編碼方法可以進(jìn)一步推廣為每一組具有多個(gè)編碼的情 況。如圖2所示,在該組的三個(gè)編碼(碼1、碼2和碼3)中,每一個(gè)編碼都具有獨(dú)立設(shè)置的編碼 數(shù)據(jù)和共同的驗(yàn)證因子,任何一個(gè)編碼都可以作為明碼/暗碼使用。這些編碼可以根據(jù)實(shí)際 需要進(jìn)行加密和變換,以使其保持?jǐn)?shù)據(jù)的安全性。通過共同使用的驗(yàn)證因子,可以使碼1、碼 2和碼3在編碼過程中具有相互關(guān)聯(lián)的數(shù)學(xué)基礎(chǔ);而在解碼過程中通過該驗(yàn)證因子是否存 在,可以有效檢測(cè)碼1、碼2和碼3之間是否存在一一對(duì)應(yīng)的關(guān)聯(lián)關(guān)系。由此推而廣之,只要在 每一組兩個(gè)或N個(gè)相互關(guān)聯(lián)的編碼中包含有相同的驗(yàn)證因子,就可以用來實(shí)現(xiàn)本發(fā)明所提 供的多碼關(guān)聯(lián)編碼方法。
[0035]從上述說明