发明内容
本发明的目的在于提供一种防伪环形码的制作方法,其具有可靠性高,不易被复制、生成和便于使用等特点。
本发明的目的是通过以下技术方案实现的。
一种防伪环形码的制作方法,包括如下步骤:
a:将环形码所要记录的数字字母串经过加密转换成二进制位串,根据二进制位串的个数确定环码的层数与每层二进制数字个数;
b:生成长方形图形;
c:根据二进制位串的个数将生成的长方形图形分成n层,其中第1层为圆心层,表示圆心;第2~n-1层为数据层,用于存放每层二进制数字对应的图案;第n层表示边界层,n为自然数;
d:确定长方形图形中各像素点的灰度或彩色信息后生成编码图案;
e:将记录每层编码图案的长方形图形经过极坐标变换后形成同心圆环图形。
优选的,在步骤e的极坐标变换中,长方形图形的高度为所述同心圆环图形的半径;长方形图形和同心圆环图形的原点在左上角,水平和竖直方向分别为向右和向下为正方向。
优选的,所述同心圆环中的水平正方向上面设置有定位起始识别点。
优选的,步骤a中数字字母串生成具体包括:
s1:以链表方式从小到大存储标签号码,同时排除重复数位过多的号码;
s2:循环地根据产生的随机数截断并交换处在随机数位置的链表;
s3:循环地根据产生的两个随机数交换相应位置上的链表节点;
s4:将链表节点中的号码存入数字字母串文件。
以下对该防伪码以及整体编码方法做进一步描述。
一种防伪环形码,用复数个同心圆环表示一个数字字母串,每一个同心圆由不等长的实线和空隙组成,环码的数字字符串经过加密转换成二进制位串,根据二进制位串的个数确定环码的层数与每层二进制数字个数。
优选的,所述同心圆环的层数为n,其中第1层为圆心层,表示圆心;第2~n-1层为数据层,用于存放数据;第n层表示边界层,n为自然数。
优选的,所述同心圆环是由对应的经编码后的长方形图形经过极坐标变换成圆环图形。
优选的,所述长方形图形的高度为所述同心圆环的半径,其原点在左上角,水平和竖直方向分别为向右和向下为正方向。
优选的,所述同心圆环中的水平正方向上面设置有定位起始识别点。一种防伪环形码编码方法,包括步骤:
a:将商品信息参数编码成明文码;
b:将明文码和加密信息作为输入来对明文码进行加密;
c:将加密后的明文码转换成二进制位串;
d:根据二进制位串的个数确定要生成环形码的结构。
优选的,步骤d具体为确定各层环形码图像信息条的位置与尺寸,并将数据写入到各个数据层次中生成长方形图形。
优选的,步骤d之后还包括:确定环形码图像中各像素点的灰度或彩色信息,保存环码图形。
优选的,所述明文码的内容为描述该商品的参数,所述参数包括:产品代码,分类代码,产品序列号,生产日期,生产地址和/或质保信息。
优选的,所述明文码生成具体包括:
s1:以链表方式从小到大存储标签号码,同时排除重复数位过多的号码;
s2:循环地根据产生的随机数截断并交换处在随机数位置的链表;
s3:循环地根据产生的两个随机数交换相应位置上的链表节点;
s4:将链表节点中的号码存入明文码文件。
本发明与现有技术相比,本发明防伪环形码用多个同心圆环表示一个数字字母串,每一个同心圆由不等长的实线和空隙组成,环码的数字字符串经过加密转换成二进制位串,根据二进制位串的个数确定环码的层数与每层二进制数字个数,从而大大提高了防伪度,不仅在于防伪序列码的获取,其组成一种环形码结构标签,本身就具有很大的技术难度。因此,大大提高了此环形码的可靠性,具有成本低、查询便捷等优点。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明防伪环形码为多个同心圆环表示的一个数字字母串,每个同心圆由不等长的实线和空隙组成,同心圆环的层数设为n,其中1层为圆心层,表示圆心;2~n-1层为数据层,用于存放数据;n层表示边界层,n为自然数。
下面结合具体实施例进一步说明,本发明中假定n=5,以1234567891234为例,图1表示的是1234567891234的长方形图形RectBufImage,图中1、2、3、4、5分别表示各层序号。
RectBufImage的生成方式如下:
(1)将长方形图形RectBufImage初始化为白色。
(2)生成第1层图案。这里设第1层图案的高度为h 1。
(3)生成第2层图案。图1中第2层图案是黑白相间的,黑色部分长的代表二进制数据1,短的代表二进制数据0;白色部分长的代表二进制数据1,短的代表二进制数据0。为了方便识别和定位,将第一个黑色部分均匀分成2个部分分别分布在第2层图案的最左边和最右边。从而得出第2层图案表示的二进制数据为:11111110111000,其中黑色部分表示的数据为:1111110,白色部分表示的数据为:1110100。
对于黑色部分的0编码,将其高度设置为稍高于1的编码,以更好地识别0编码。设第2层编码中的黑色部分1的编码高度为h2,0的编码高度为1.5h2。确定其宽度,首先计算11111110111000按照比例所占的空间,黑色部分的1编码长度为5,0编码长度为2,白色部分的1编码长度为6,0编码长度为3;从而得到总的比例为:黑色部分的长度l1=5+5+5+5+5+5+2=32,白色部分的长度为l2=6+6+6+3+6+3+3=33,总长度l=l1+l2=65。这样再通过delt=L×l/360(L表示图1长方形图形的宽度),其中L×l为图1的宽度,得到每个比例所占的宽度。从而确定第一个黑色编码的长度为5delt。同理可以确定其他的编码长度。
(4)同(3)步骤生成3、4层编码图案。3、4层的黑色部分的1编码高度分别为h3和h4。
(5)生成h5高度的第5层编码图案。
h1到h5的高度确定是自定义选择的,在该编码方案中h1=0.15R,h2=h3=h4=h5=0.05R。其中R是图1的高度。
如图2所示的同心圆环是由图1所示的长方形图形RectBufImage经过极坐标装换变成圆环图形BarcodeImage。
图2中的序号1-5对应的环形图案是分别由图1中的序号1-5所指示的层次通过极坐标变换而得到的。其中极坐标变换中,RectBufImage的高度为BarodeImage的半径,设为R。RectBufImage和BarcodeImage的原点在左上角,水平和竖直方向分别为向右和向下为正方向。
不难得知,RectBufImage的水平坐标表示的是角度,表示范围为0-359,意义是表示该点在图2中对应点同水平正方向所成的角度,逆时针方向为正。竖直坐标表示距圆心的距离,范围为0-R,意义是该点在图2中对应点距圆心的距离。在BarcodeImage中,圆心的坐标为(R,R)。
在BarcodeImage中的水平正方向上面3层和4层连接在了一起,这个连接的目的是定位起始识别点。
本发明中,通过生成上述RectBufImage并对RectBufImage通过极坐标转换生成一个环码图案BarcodeImage了。
请参阅图3所示,本发明防伪环形码编码方法,包括:
步骤301:将商品信息参数编码成明文码;明文码的内容产生于描述该真版物品的有关参数。输入参数应选择能唯一地并且精确地描述该真版物品的信息,或者描述一批同类真版物品。这些参数可以是:产品代码,分类代码,产品序列号,生产日期,生产地址,质保信息等。
明文码可以由多种方式生成,包括但不限于以下方式:
a.简单连接所有选取的参数内容,以行成一个数据码;
b.以随机排列顺序来连接所选取的参数内容,并记录排列顺序;
c.对所选参数的内容进行交错排序,其交错格式可以是用事先设计好的格式,也可以在生成的明文码中已知位置提供交错格式的信息;
d.对所选参数的内容进行散列(hash)编码;
e.用XML文档格式存储,以便与其他格式的明文码兼容。
本实施例明文码生成步骤包括:
1.以链表方式从小到大存储标签号码,同时排除重复数位过多的号码;
2.循环地根据产生的随机数截断并交换处在随机数位置的链表;
3.循环地根据产生的两个随机数交换相应位置上的链表节点;
4.将链表节点中的号码存入明文码文件。
以一个商品为例:该商品的生产日期为2012年4月2日,商品编码为123456,厂家编码为1234,同时为其分配安全码123456,以得到这样一个编码:123456+1234+120402+123456=1234561234120402123456。
第2层编码123456,第3层编码12341204,第4层编码02123456。
步骤302:将明文码和加密信息作为输入来对明文码进行加密。加密信息指的加密算法所需的信息,比如,加密密钥,等等。所用的加密算法可以是为防伪检测应用而特地设计的加密算法,也可以是通用的加密算法,如各类数据加密标准(DES)算法,各类高级加密标准(AES)算法,散列(hash)摘要(如MD5,RSA-128),交替散列(hash)等。
本发明利用置换方式将要编码的数据串的顺序打乱,然后再利用RSA算法将乱序的数据串进行加密,再生成对应的二进制流并将它们写入到数据层次中。
步骤303:将加密后的明文码转换成二进制位串;以第2层编码为例:首先将123456转换为二进制数据:11011001101001000,按照图1中(3)步骤将编码写入到第2层编码。同理可以生成3、4层编码。步骤304:根据二进制位串的个数确定要生成环形码的结构(层数与每层二进制数字个数);按照图1中步骤(3)确定各层环行码图像信息条的位置与尺寸,将数据写入到各个数据层次中生成RectBufImage。
步骤305:确定环形码图像中各像素点的灰度或彩色信息,再通过RectBufImage生成BarcodeImage。
步骤306:保存环形码图像。
本发明防伪环形码用多个同心圆环表示一个数字字母串,每一个同心圆由不等长的实线和空隙组成,环码的数字字符串经过加密转换成二进制位串,根据二进制位串的个数确定环码的层数与每层二进制数字个数,从而大大提高了防伪度,不仅在于防伪序列码的获取,其组成一种环形码结构标签,本身就具有很大的技术难度。因此,大大提高了此环形码的可靠性,具有成本低、查询便捷等优点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。