農(nóng)產(chǎn)品追溯碼加密算法
經(jīng)歷2008年牛奶之觴后,“問題奶粉”“主食轉(zhuǎn)基因““海南毒豇豆”“雙匯瘦肉精”等的出現(xiàn)再次為人們敲響了警鐘。為此,我國各?。ㄊ?、區(qū))也相繼開發(fā)自己的農(nóng)產(chǎn)品質(zhì)量安全追溯系統(tǒng),但這些農(nóng)產(chǎn)品追溯碼編碼方式來看,加密性不強(qiáng)、長度較長、追溯信息對公眾不透明等問題依然存在。針對上述問題,考慮到同一行政區(qū)劃內(nèi)企業(yè)名稱不能重復(fù)注冊,我們采用行政區(qū)劃碼與企業(yè)名稱相結(jié)合的方式設(shè)計產(chǎn)地碼,其中企業(yè)名稱由區(qū)位碼表示。采用進(jìn)制轉(zhuǎn)換、劃分區(qū)段等編碼算法對追溯碼進(jìn)行多重加密和碼長壓縮,保證編碼信息完整的同時將34位編碼壓縮為20位。
一、追溯碼的設(shè)計
本研究原始追溯碼由產(chǎn)地碼、產(chǎn)品碼、生產(chǎn)日期碼、認(rèn)證類型碼等34位數(shù)組成,如表1所示。

1、產(chǎn)地碼
產(chǎn)地碼為22位數(shù)字,其中位置碼6位( 01......06),根據(jù)行政區(qū)劃代碼規(guī)則來設(shè)計,用于定位企業(yè)所在行政注冊區(qū)域;企業(yè)碼16位(07......022),根據(jù)企業(yè)命名規(guī)則,由字號的關(guān)鍵字
表示企業(yè),這里取字號中4個關(guān)鍵字進(jìn)行區(qū)位碼編碼,一個漢字唯一對應(yīng)4位區(qū)位碼(即共16位,不足的右邊補(bǔ)。)。對指定行政注冊區(qū)域內(nèi)的企業(yè)字號進(jìn)行搜索,能夠定位到該生產(chǎn)企業(yè)。如北京錦繡大地××有限公司在北京市工商行政管理局朝陽分局登記注冊,北京市朝陽區(qū)的行政區(qū)劃碼為110105,則該公司農(nóng)產(chǎn)品追溯碼中位置碼為110105,字號關(guān)鍵字“錦繡大地”所對應(yīng)的區(qū)位碼分別是:“錦”2985、“繡”4869、¨大”2083、“地”2156.因此16位企業(yè)碼為2985486920832156。
2、產(chǎn)品碼
產(chǎn)品碼為5位數(shù)字,其中大類別1位(P1),按照傳統(tǒng)和習(xí)慣一般把農(nóng)產(chǎn)品分為7類,采用l位表示大類別仍有擴(kuò)展備用,如表2;種類2位( P2 P3),表示每大類下的種類,采用自增流水號編碼.2位數(shù)能表示99種編碼組合,即使隨著生物技術(shù)發(fā)展致使種類增加也足以用于擴(kuò)展備用;品種2位( P4PS),表示每種類中的品種名稱,采用自增流水號編碼,足夠擴(kuò)展備用。

3、生產(chǎn)日期碼
生產(chǎn)日期碼為6位數(shù)字( YY/MM/DD),即年/月/日。其中每部分編碼范圍:YY為11~50,表示2011~2050年;MM為01~12,表示1~12月;DD為01~31,表示1~31日。
4、認(rèn)證類型碼
認(rèn)證類型是衡量農(nóng)產(chǎn)品質(zhì)量安全的一項重要指標(biāo),用1位1~4的數(shù)字(C)分別表示綠色認(rèn)證、有機(jī)認(rèn)證、無公害認(rèn)證及其他認(rèn)證。
二、農(nóng)產(chǎn)品追溯碼加密算法的設(shè)計
為了確保追溯碼的安全性,同時考慮到編碼長度,需要利用加密算法對部分編碼文件進(jìn)行加密和壓縮,最后以整體編碼特點(diǎn)進(jìn)一步生成用于防偽的多重校驗碼。
1、產(chǎn)地碼加密算法的設(shè)計
產(chǎn)地碼為22位,為了加密和縮短碼長,對其按如下加密算法進(jìn)行轉(zhuǎn)換:
(1)十進(jìn)制轉(zhuǎn)換成四進(jìn)制
四進(jìn)制逢4進(jìn)1,采用0~3這4個數(shù)碼,四進(jìn)制與十進(jìn)制的對應(yīng)關(guān)系如表3。由表3可知2位四進(jìn)制數(shù)足以表示十迸制的0~9,這里我們只轉(zhuǎn)換前21位,那么22位產(chǎn)地碼轉(zhuǎn)換后為21×2+1=43位。

(2)劃分區(qū)段
將轉(zhuǎn)換過的前42位產(chǎn)地碼分為3組,每組14位,對每組分別進(jìn)行進(jìn)一步的編碼換算。就每14位來說,按7項處理(每項2位,仍看成十進(jìn)制關(guān)系),用A—G標(biāo)識;根據(jù)表3給出的四進(jìn)制編碼規(guī)則,以每組14位為單位按A~G的范圍劃分區(qū)段,如表4所示。

(3)確定項與項之間的換算關(guān)系
類似“時”“分”‘‘秒”的倍數(shù)關(guān)系,如“時”“分”對應(yīng)于“秒”的倍數(shù)分別為3600、60,這里假定A—F對于G的倍數(shù)分別為13、11、9、7、5、3。
(4)確定區(qū)段
劃分好區(qū)段之后,對每組進(jìn)行進(jìn)一步編碼換算前要先確定該組屬于哪個區(qū)段。參考表4的原則,如果編碼區(qū)段為1,則A減去00;如果編碼區(qū)段為2,則A減去10;如果編碼區(qū)段為3,則A減去20。
(5)編碼換算
區(qū)段確定后,將14位編碼按各項的倍數(shù)換算成以C表示的數(shù)值,即每組相對區(qū)段碼(3位,不足3位左邊補(bǔ)。)加上1位區(qū)段標(biāo)志碼,則14位編碼縮短為4位,3組即為12位,加上原產(chǎn)地碼第22位,轉(zhuǎn)換后的產(chǎn)地碼為13位。
(6)產(chǎn)地碼校驗碼的生成
轉(zhuǎn)換后的13位編碼中有3位區(qū)段標(biāo)識碼,均為1一3的數(shù)字;取前2組的區(qū)段標(biāo)識碼組成1位校驗碼,這樣既縮短了碼長又利于加密,方法是:將前2組區(qū)段標(biāo)識碼進(jìn)行排列組合,共有9種,如表5;編碼時根據(jù)前2組區(qū)段標(biāo)識碼找到對應(yīng)的1位校驗碼,放在第3組編碼之前口第3組1位區(qū)段標(biāo)識碼留作最后生成整體校驗碼用。最終轉(zhuǎn)換后的產(chǎn)地碼為12位。

2、生產(chǎn)日期碼加密算法的設(shè)計
生產(chǎn)日期碼仍采用相對區(qū)段碼和區(qū)段標(biāo)識碼相結(jié)合的方法給出,具體區(qū)段劃分如表6。

類似于產(chǎn)地碼的轉(zhuǎn)換算法,生產(chǎn)日期碼不再采用“年”“月”“日”之間的倍數(shù)關(guān)系而假定“年”“月”對于“日”的倍數(shù)分別為5、3,則轉(zhuǎn)換后相對區(qū)段碼為2位(不足2位左邊補(bǔ)0)。確定區(qū)段時參考表6的原則,如果編碼區(qū)段為1,則“年”減去2011;如果編碼區(qū)段為2,則“年”減去2017;以此類推。如2011年4月18日,按年份確定為1區(qū)段,換算后相對區(qū)段碼為(2011-2011)×5 +04×3 +18 =30,則轉(zhuǎn)換后的生產(chǎn)日期碼為30(1)。根據(jù)以上算法,6位生產(chǎn)日期碼轉(zhuǎn)換后為3位。
3、校驗碼生成算法的設(shè)計
產(chǎn)地碼第3組的1位標(biāo)識碼為1~3的數(shù)字;生產(chǎn)日期碼1位標(biāo)識碼為1~7的數(shù)字;認(rèn)證類型碼為1~4的數(shù)字,此3位的84種排列組合如表7所示。在編碼時根據(jù)該3位的組合找到對應(yīng)的2位校驗碼,既對追溯碼整體加密又縮短了碼長。
本研究采用多重加密算法:通過進(jìn)制轉(zhuǎn)換和劃分區(qū)段的編碼算法分別將22位產(chǎn)地碼轉(zhuǎn)換為12位、將6位生產(chǎn)日期碼轉(zhuǎn)換為3位,既起到了加密作用又縮短了碼長;然后由產(chǎn)地碼1位標(biāo)識碼、生產(chǎn)日期碼l位標(biāo)識碼和認(rèn)證類型碼進(jìn)行排列組合生成2位總體校驗碼,進(jìn)一步對追溯碼文件加密和壓縮。
小知識之綠色食品認(rèn)證
為規(guī)范綠色食品認(rèn)證工作,依據(jù)《綠色食品標(biāo)志管理辦法》,制定本程序。凡具有綠色食品生產(chǎn)條件的國內(nèi)企業(yè)均可按本程序申請綠色食品認(rèn)證。









