一种商品防伪码生成与验证方法技术领域
本发明涉及一种商品防伪码生成与验证方法,本发明属于商品防伪技术领域。
背景技术
随着社会经济的发展,人们对物质需求的提高,而对产品质量问题的关注,已经成
为了这个社会绕不开的话题,假冒的商品不但侵害了消费者的权益,也给商品生产者带来
巨大的经济损失,各个生产企业为保护自己的产品不被无良商家的侵害,开始越来越重视
产品的防伪问题,而传统的防伪技术所生成的防伪码,其技术含量低解密过程简单,已经不
能满足这个数字化的社会需求。
发明内容
本发明所要解决的技术问题在于提供一种具有唯一性、保密性和无规律性的防伪
码,并通过特殊的验证方法来验证,从而克服上述现有技术的不足。
为解决上述技术问题,本发明采用如下技术方案;一种商品防伪码生成与验证方
法。该方法包括以下步骤:
(1)将防伪码基本信息(4位企业码和4~16位序列码)组成0级明文A;
(2)由生产中心根据企业码A1获取该企业码对应的企业密钥K1,并基于K1对序列码明
文A2进行加密,得到加密后的密文B1。密文B1和明文A1组成了1级密文B;
(3)根据当前时刻系统时钟产生1个5位随机码R,并由R经特定验证算法得到的3位验证
码D2;
(4)由生产中心根据生产密钥K2对1级密文B进行加密,得到2级密文C;
(5)在随机验证码D2控制下,对2级密文C进行混淆后得到的密文混淆码D1;
(6)由密文混淆码D1和3位的随机验证码D2经特定验证算法后得到1位验证码D3;
(7)由生产中心根据网站密钥K3对由D1、D2和D3组成的混淆密文D进行最后一次加密,
得到最终的防伪码E;
(8)将随机码R保存到与0级明文A对应的数据库记录中,以备将来的防伪码验证之需。
上述的商品防伪码生成与验证方法,步骤(2)中0级明文A包括4位的企业码A1和序
列码A2,A2的长度N:4~16之间的数,包含4和16(由于序列码可能由小于4位数的数字组成,
故此处需要提供序列码长度);
上述的商品防伪码生成与验证方法,所述的步骤(2)中的企业密钥k1是一级密钥,且是
与企业码A1对应的密钥,不同的企业码可对应不同的K1,是由N位数字或字母(以字符串形
式表示)组成;
上述的商品防伪码生成与验证方法,步骤(3)中随机码R由5位数字(以整数形式表示)
组成,而为了避免可能的恶意猜测(根据有限个随机验证码推导出随机码,再根据随机码推
导出随机数种子)推导随机数种子的行为,特根据系统时间来设定种子值,且每隔一定时间
后根据当前系统时间更换随机数种子。在本发明中,为了尽可能防范猜测随机数攻击行为,
采用在Windows/C环境下QueryPerformanceFrequency和QueryPerformanceCounter函数来
获取系统时间。并在每产生一定数量的防伪码后根据系统时间重新更换种子值。然后采用
标准C/C++库自带srand()函数产生随机数。
上述的商品防伪码生成与验证方法,步骤(3)中3位验证码D2,需要由5位的随机码
R映射为1个3位数的随机验证码D2。考虑到比较简单使用的算法即为取模计算。
上述的商品防伪码生成与验证方法,步骤(4)中生产密钥K2是二级密钥,由防伪码
生成商设置的密钥,与K1成套使用。当K1更换时可同时更换。由N+4位数字或字母(以字符串
形式表示)组成;
上述的商品防伪码生成与验证方法,步骤(5)中密文混淆码D1由随机验证码D2 (且D2
的长度固定为3)控制,本发明将采用循环扩展的方式将随机验证码D2扩展为与待混淆码字
C等长的密钥D2’,然后D2’与二级密文C经混淆算法加密形成密文混淆码D1。
上述的商品防伪码生成与验证方法,步骤(6)序列校验码D3,其采用与身份证校验
码计算法(ISO 7064:1983.MOD 11-2)类似的算法进行校验。
上述的商品防伪码生成与验证方法,步骤(7)中网站密钥K3是三级密钥,属于网站
验证密钥,该密码一经设置后不可更换,由N+8位数字或字母(以字符串形式表示)组成。
上述的商品防伪码生成与验证方法,防伪码验证包括以下步骤:
(1)由生产中心根据网站密钥K3对防伪码E进行解密,得到混淆密文D,并将D分解为D1、
D2和D3;
(2)由密文混淆码D1和3位的随机验证码D2经特定验证算法(采用身份证校验码计算法
(ISO 7064:1983.MOD 11-2)类似的算法进行校验)后得到1位验证码AD,将AD和D3进行比
较,如果相等则进入下一步,否则判定该防伪码为伪码,验证流程中止;
(3)在随机验证码D2控制下,对密文混淆码D1进行解混淆得到2级密文C;
(4)由生产中心根据生产密钥K2对2级密文C进行解密,得到1级密文B,并将B分解为企
业码A1和序列加密码B1;
(5)判别企业码A1是否为有效企业码,是则进入下一步,否则判定该防伪码为伪码,验
证流程中止;
(6)由生产中心根据企业码A1获取该企业码对应的企业密钥K1,并基于K1对序列加密
码B1进行解密,得到序列码明文A2。企业码A1和序列码明文A2组成了0级明文A;
(7)根据企业码A1,在数据库中查询序列码明文A2是否为其合法序列码,如果是则进入
下一步(此处可同时查询其有效期,若该序列码对应的商品查询已超出有效期,则给出提
示),否则判定该防伪码为伪码,验证流程中止;
(8)根据0级明文A从数据库记录中获取其对应的随机码R;
(9)由R经特定验证算法(需要由5位的随机码R映射为1个3位数的随机验证码KD,考虑
到比较简单使用的算法即为取模计算)得到的3位随机验证码KD,将KD和D2进行比较,如果
相等则最终判断该防伪码为真,否则判定该防伪码为伪码。验证流程结束。
本发明的有益效果:与现有技术相比,本发明可根据生产企业的企业码和该商品
对应的序列码,在特定密钥的控制下,通过传统加密算法和特殊随机码验证、校验码验证、
码字混淆处理等手段,生成一组长度可随序列码长度而变化的防伪码。而且该防伪码可满
足唯一性、保密性和无规律性。在合理计算资源条件下,根据有限数量的防伪码,在防伪码
生成软件系统、数据库信息、密钥均未泄露的情况下,很难制造出能够通过防伪验证的防伪
码。
附图说明
图1是本发明中商品防伪码生成流程图;
图2是本发明中商品防伪码验证流程图a;
图3是本发明中商品防伪码验证流程图b。
具体实施方式
下面结合具体实时方式对本发明作进一步的说明。
实施例1:如图1所示,本发明的加密算法包括以下步骤:
(1)将防伪码基本信息组成0级明文A;包括4位的企业码A1和序列码A2,A2的长度N:4~
16之间的数,包含4和16(由于序列码可能由小于4位数的数字组成,故此处需要提供序列码
长度);0级明文A可以根据企业的要求产生,其中企业码A1可以由厂家代号组成、序列码A2
可以由流水号及生产日期组成,如001100556420160427,其中厂家代号:0011,流水号:
005564,日期2016年04月27日,也可以包含其他信息的各种代码。
(2)由生产中心根据企业码A1获取该企业码对应的N位的企业密钥K1,并基于K1对
序列码明文A2进行加密,得到加密后的密文B1。密文B1和明文A1组成了1级密文B;
(3)根据当前时刻系统时钟产生1个5位随机码R,并由R经特定验证算法得到的3位验证
码D2;
所述的随机码,本发明通过设置srand()的种子从0一直增加, 则产生的随机数也逐
渐递增,从38一直增加到32766(序号0-10022),之后又从1一直增加到32765(20056), 之后
从0增加到32767(30091),之后从2增加到32765(40125),之后从1增加到32764(50159),之
后从0增加到32766(60194);如所选的随机码R为26743,
需要将5位的随机码R映射为1个3位数的随机验证码D2。通过随机验证码产生算法产
生--取模。则取最大的3位数质数997为模进行计算。
D2=R%997 =26743%997=821。
(4)由生产中心根据生产密钥N+4位的K2对1级密文B进行加密,得到2级密文C;
(5)在随机验证码D2控制下,对2级密文C进行混淆后得到的密文混淆码D1;
本发明将采用循环扩展的方式将随机验证码D2扩展为与待混淆码字C等长的密钥。比
如C长度为14,D2={8,2,1},扩展后D2’={8,2,1,8,2,1,8,2,1,8,2,1,8,2,}。
然后D2’与二级密文C经混淆算法加密形成密文混淆码D1。
(6)由密文混淆码D1和3位的随机验证码D2经特定验证算法后得到1位验证码D3;
所述校验方法,由密文混淆码D1和随机验证码D2每个码子乘以乘数因子(从右向左不
断循环,其中1对应校验位):1,2,4,8,5,10,9,7,3,6,其权值(乘数因子)计算方式为: wi=r
(i-1)(mod M),其中,r=2,M=11)然后对所有的乘积求和为sum,加上列校验码D3值后,其和必
须满足模11余1。即:1≡(sum+D3)(mod 11),这样就求得D3。以0821为例,其乘数因子为5,
8,4,2, sum=5×0+8×8+4×2+2×1=74,1≡(sum+D3)(mod 11),则序列校验码D3=4。
(7)由生产中心根据网站密钥K3对由D1、D2和D3组成的混淆密文D进行最后一次加
密,得到最终的防伪码E;
(8)将随机码R保存到与0级明文A对应的数据库记录中,以备将来的防伪码验证之需。
本发明采用经典加密算法进行加密。
本发明采用的企业密钥K1是与企业码A1对应的密钥。不同的企业对应不同的企业
密钥。
本发明采用的生产密钥K2是由防伪码生成商设置的密钥。
本发明采用的网站密钥K3是网站验证密钥。
如图2-3所示:防伪码验证时,验证的防伪码E、随机码R、企业密钥K1、生产密钥K2
和网站密钥K3必须与加密算法中的数据配套,且验证步骤如下:
(1)由生产中心根据网站密钥K3对防伪码E进行解密,得到混淆密文D,并将D分解为D1、
D2和D3;
(2)由密文混淆码D1和3位的随机验证码D2经特定验证算法(采用身份证校验码计算法
(ISO 7064:1983.MOD 11-2)类似的算法进行校验)后得到1位验证码AD,将AD和D3进行比
较,如果相等则进入下一步,否则判定该防伪码为伪码,验证流程中止;
(3)在随机验证码D2控制下,对密文混淆码D1进行解混淆得到2级密文C;
(4)由生产中心根据生产密钥K2对2级密文C进行解密,得到1级密文B,并将B分解为企
业码A1和序列加密码B1;
(5)判别企业码A1是否为有效企业码,是则进入下一步,否则判定该防伪码为伪码,验
证流程中止;
(6)由生产中心根据企业码A1获取该企业码对应的企业密钥K1,并基于K1对序列加密
码B1进行解密,得到序列码明文A2。企业码A1和序列码明文A2组成了0级明文A;
(7)根据企业码A1,在数据库中查询序列码明文A2是否为其合法序列码,如果是则进入
下一步(此处可同时查询其有效期,若该序列码对应的商品查询已超出有效期,则给出提
示),否则判定该防伪码为伪码,验证流程中止;
(8)根据0级明文A从数据库记录中获取其对应的随机码R;
(9)由R经特定验证算法(需要由5位的随机码R映射为1个3位数的随机验证码KD,考虑
到比较简单使用的算法即为取模计算)得到的3位随机验证码KD,将KD和D2进行比较,如果
相等则最终判断该防伪码为真,否则判定该防伪码为伪码。验证流程结束。
本发明中的解密算法采用经典加密算法的逆算法进行解密。
在加解密过程中,所使用的密钥可以为任意数字、字母和符号的组合,但由于多表
代换加解密算法要求的密钥为纯数字,所以需要在加解密之前将密钥转换为数字。
本发明中采用的解混淆算法,其数学方法与解密方法相同,就是对混淆算法的逆
算法进行解密。
本发明实施方式不限于上述施例,在不脱离本发明宗旨的前提下做出的各种变化
均属于本发明的保护范围之内。