一种二维码编码方法和装置与流程

文档序号:11134795阅读:555来源:国知局
一种二维码编码方法和装置与制造工艺

本发明涉及数据处理技术领域,具体而言,涉及一种二维码编码方法和装置。



背景技术:

目前,二维码作为一种信息的载体,越来越多的出现在日常生活中,如二维码被印在盛放矿泉水、牛奶或者其他液体的容器表面上,使得用户通过扫描容器表面的二维码,获取所购买产品的更多信息。在生成产品的二维码时,厂商会按照自定义算法生成产品编码,产品编码能够唯一地确定该产品,因为这是公开的编码,无法抵御假冒或伪造,也不能防止假冒厂商抵赖,所以必须在产品编码中附加签字码,以保证二维码的安全使用。

相关技术中,现有的二维码的编码方法在进行编码时,为了保证二维码的保密性和安全性,为了实现第三方独立鉴别的能力以及签字可作为一次一密的动态因子,通常情况下使用非对称加密算法来生成二维码的签字码,同时采用单向算法和对称算法来获得安全强度高编码长度短的结果。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

通过非对称加密算法得到的签字码包含的字节较多,一般都是8字节的倍数,不能用于液体容器等数字身份承载区域比较小的场景,而且由于容器表面为弧形,容易使二维码在容器表面产生弯曲,如果二维码占用面积较大还容易造成二维码可读性变差的缺陷。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种二维码编码方法和装置,以减少所生成二维码所包含的字节,缩小二维码占用的面积。

第一方面,本发明实施例提供了一种二维码编码方法,包括:

获取待编码的产品的产品编码;

对所述产品编码进行处理,得到纠缠字符串;

对得到的所述纠缠字符串进行循环冗余校验码校验,得到所述产品编码的验证码;

对得到的所述产品编码和所述验证码进行处理,得到作为所述产品的产品身份标识的二维码。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中:对所述产品编码进行处理,得到纠缠字符串,包括:

通过非对称加密算法对所述产品编码进行签名,得到所述产品编码的签字结果,并公开非对称算法的公钥和签字结果,作为第三方独立鉴别的原始数据之一,所述产品编码包括:产品种类编码和产品序列号;

通过杂凑运算对所述产品编码进行特征提取,得到所述产品编码的数字指纹;

对所述产品编码的签字结果和所述产品编码的数字指纹进行混合加密运算,得到纠缠字符串。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中:所述方法还包括:

通过已编辑的Base64编码对所述产品身份标识进行编码,得到所述产品身份标识的HTTP字符串,其中,已编辑的所述Base64编码中第62号字符为“*”以及第63号字符为“-”;

通过得到的所述产品身份标识和所述HTTP字符串,得到所述产品的编码图案。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中:在获取待编码的产品的产品编码之前,所述方法还包括:

按照各个产品序列号生成的顺序,获取待使用的各个产品序列号;

对排序后的所述各个产品序列号进行乱序,得到所述待使用的各个产品序列号的扰码序列;

当获取到序列号使用指令时,从所述扰码序列中获取一个待使用的产品序列号;

根据预设的产品与产品种类编码的对应关系,确定待编码的产品的产品种类编码;

将确定的产品种类编码和获取的产品序列号进行组合,生成所述产品的产品编码。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中:对排序后的所述各个产品序列号进行乱序,得到所述待使用的各个产品序列号的扰码序列,包括:

向排序后的所述各个产品序列号分配排序序号;

根据预设的序列号分组所包括的产品序列号数量,对获取到的所述各个产品序列号进行分组;

通过所述各个产品序列号分配到的所述排序序号和所述序列号分组所包括的产品序列号数量,计算得到所述各个产品序列号被分配到的序列号分组的分组标识;

对计算得到的所述分组标识进行满射格式保留加密算法计算,得到与各所述分组标识对应的分组标识一次加密字符串;

采用格式保留算法对分组标识一次加密字符串再次进行加密,得到与各所述分组标识对应的分组标识二次加密字符串;

根据得到的与各所述分组标识对应的所述分组标识二次加密字符串,对各所述分组标识对应的序列号分组中的各产品序列号进行乱序操作,得到各产品序列号乱序操作后所在序列号分组中的乱序序号;

根据得到的所述乱序序号,对各序列号分组中的产品序列号进行重新排序,得到待使用的各个产品序列号的扰码序列。

第二方面,本发明实施例还提供一种二维码编码装置,包括:

产品编码获取模块,用于获取待编码的产品的产品编码;

字符串处理模块,用于对所述产品编码进行处理,得到纠缠字符串;

验证码处理模块,用于对得到的所述纠缠字符串进行循环冗余校验码校验,得到所述产品编码的验证码;

编码处理模块,用于对得到的所述产品编码和所述验证码进行处理,得到作为所述产品的产品身份标识的二维码。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中:所述字符串处理模块,包括:

签名单元,用于通过非对称加密算法对所述产品编码进行签名,得到所述产品编码的签字结果,并公开非对称算法的公钥和签字结果,作为第三方独立鉴别的原始数据之一,所述产品编码包括:产品种类编码和产品序列号;

特征提取单元,用于通过杂凑运算对所述产品编码进行特征提取,得到所述产品编码的数字指纹;

计算单元,用于对所述产品编码的签字结果和所述产品编码的数字指纹进行混合加密运算,得到纠缠字符串。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中:所述装置还包括:

网址编码模块,用于通过已编辑的Base64编码对所述产品身份标识进行编码,得到所述产品身份标识的HTTP字符串,其中,已编辑的所述Base64编码中第62号字符为“*”以及第63号字符为“-”;

编码处理模块,用于通过得到的所述产品身份标识和所述HTTP字符串,得到所述产品的编码图案。

结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中:所述装置还包括:

产品序列号获取模块,用于按照各个产品序列号生成的顺序,获取待使用的各个产品序列号;

乱序模块,用于对排序后的所述各个产品序列号进行乱序,得到所述待使用的各个产品序列号的扰码序列;

序列号获取模块,用于当获取到序列号使用指令时,从所述扰码序列中获取一个待使用的产品序列号;

种类确定单元,用于根据预设的产品与产品种类编码的对应关系,确定待编码的产品的产品种类编码;

产品编码生成单元,用于将确定的产品种类编码和获取的产品序列号进行组合,生成所述产品的产品编码。

结合第二方面,本发明实施例提供了第二方面的第四种可能的实施方式,其中:所述乱序模块,包括:

序号分配单元,用于向排序后的所述各个产品序列号分配排序序号;

分组单元,用于根据预设的序列号分组所包括的产品序列号数量,对获取到的所述各个产品序列号进行分组;

分组标识计算单元,用于通过所述各个产品序列号分配到的所述排序序号和所述序列号分组所包括的产品序列号数量,计算得到所述各个产品序列号被分配到的序列号分组的分组标识;

第一加密单元,用于对计算得到的所述分组标识进行满射格式保留加密算法计算,得到与各所述分组标识对应的分组标识一次加密字符串;

第二加密单元,用于采用格式保留算法对分组标识一次加密字符串再次进行加密,得到与各所述分组标识对应的分组标识二次加密字符串;

乱序序号确定单元,用于根据得到的与各所述分组标识对应的所述分组标识二次加密字符串,对各所述分组标识对应的序列号分组中的各产品序列号进行乱序操作,得到各产品序列号乱序操作后所在序列号分组中的乱序序号;

乱序单元,用于根据得到的所述乱序序号,对各序列号分组中的产品序列号进行重新排序,得到待使用的各个产品序列号的扰码序列。

本发明实施例提供的二维码编码方法和装置,通过对产品编码加密计算后得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的校验码,由于循环冗余校验码校验可以将较长的字符串处理成2个字节大小的字符串,这与现有技术中通过非对称加密算法得到的二维码的验证码相比,大大减少了二维码所包含的验证码字节数,使得二维码能用于液体容器等数字身份承载区域比较小的场景,且减少了二维码所占用的面积,使二维码在容器表面时不易产生弯曲,提高了二维码的可读性。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例1所提供的一种二维码编码方法的流程图;

图2示出了本发明实施例1所提供的二维码编码方法中,生成产品编码具体方法的流程图;

图3示出了本发明实施例1所提供的一种二维码编码方法得到的含有HTTP字符串的二维码示意图;

图4示出了本发明实施例2所提供的一种二维码编码装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

相关技术中,现有的二维码的编码方法在进行编码时,为了保证二维码的保密性和安全性,通常情况下使用非对称加密算法来生成二维码的签字码。而通过非对称加密算法得到的签字码包含的字节较多,一般都是8字节的倍数,不能用于液体容器等数字身份承载区域比较小的场景,而且由于容器表面为弧形,容易使二维码在容器表面产生弯曲,如果二维码占用面积较大还容易造成二维码可读性变差的缺陷。基于此,本发明实施例提供了一种二维码编码方法和装置,下面通过实施例进行描述。

实施例1

为便于对本实施例进行理解,首先对本发明实施例所公开的一种二维码编码方法进行详细介绍。

本实施例提供了一种控制方法。本实施例的执行主体是服务器,通过对产品编码加密计算后得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的校验码。

上述服务器,可以采用任何可以进行编码二维码的计算设备,这里不再一一赘述。

参见图1,本实施例提供一种二维码编码方法,包括以下步骤100-步骤106。

在本发明实施例中,在步骤200获取待编码的产品的产品编码之前,首先需要以下步骤200至步骤208生成产品编码。

参见图2,步骤200、按照各个产品序列号生成的顺序,获取待使用的各个产品序列号。

上述待使用的各个产品序列号,是计算设备按照由小到大等预定的顺序得到的,存在一定的连续性。

步骤202、对排序后的各个产品序列号进行乱序,得到待使用的各个产品序列号的扰码序列。

上述扰码序列,就是对按照预定顺序生成的待使用的各个产品序列号进行乱序之后,得到的产品序列号序列。扰码序列中相邻的产品序列号不具有相关性。

步骤204、当获取到序列号使用指令时,从扰码序列中获取一个待使用的产品序列号。

上述从扰码序列中获取一个待使用的产品序列号,是按照扰码序列中各个产品序列号的顺序,从扰码序列的第一个产品序列号开始,从扰码序列中获取一个待使用的产品序列号进行使用。

上述序列号使用指令中携带有待编号的产品的产品标识。

步骤206、根据预设的产品与产品种类编码的对应关系,确定待编码的产品的产品种类编码。

产品与产品种类编码的对应关系,由产品标识与产品种类编码的对应关系表示,产品标识与产品种类编码的对应关系预先存储在上述计算设备的产品种类编码关系表中。

具体地,上述步骤206包括以下步骤(1)至步骤(2):

(1)根据获取到的产品标识,查询产品种类编码关系表中该产品标识对应的产品种类编码;

(2)将查询到的产品种类编码,确定为该待编码的产品的产品种类编码。

步骤208、将确定的产品种类编码和获取的产品序列号进行组合,生成上述产品的产品编码。

上述将确定的产品种类编码和获取的产品序列号进行组合,就是指将产品种类编码的字符串和产品序列号的字符串连接在一起,生成上述产品的产品编码,比如产品种类编码的字符串为100,产品序列号的字符串为001,那么生成的产品编码就是100001。

相关技术中,由于产品编码中包含产品种类编码和产品序列号,产品种类编码用于产品的类别描述,产品序列号用于区别某一种类的产品在该类别中的唯一个体。产品序列号的编码一般情况下是按顺序计算,存在一定的连续性,这种联系产生一种可预测性,为了降低仿冒厂商对包装序列中产品序列号的猜测碰撞攻击的可能性,上述对排序后的各个产品序列号进行乱序,得到待使用的各个产品序列号的扰码序列,包括以下步骤(1)至步骤(7):

(1)向排序后的各个产品序列号分配排序序号;

(2)根据预设的序列号分组所包括的产品序列号数量,对获取到的各个产品序列号进行分组;

(3)通过各个产品序列号分配到的排序序号和序列号分组所包括的产品序列号数量,计算得到各个产品序列号被分配到的序列号分组的分组标识;

(4)对计算得到的分组标识进行满射格式保留加密算法计算,得到与各分组标识对应的分组标识一次加密字符串;

(5)采用格式保留算法对分组标识一次加密字符串再次进行加密,得到与各分组标识对应的分组标识二次加密字符串;

(6)根据得到的与各分组标识对应的分组标识二次加密字符串,对各分组标识对应的序列号分组中的各产品序列号进行乱序操作,得到各产品序列号乱序操作后所在序列号分组中的乱序序号;

(7)根据得到的上述乱序序号,对各序列号分组中的产品序列号进行重新排序,得到待使用的各个产品序列号的扰码序列。

在上述步骤4中,除了应用上述满射格式保留加密算法计算分组标识一次加密字符串之外,还可以采用其他的非对称加密算法计算分组标识一次加密字符串,这里不再一一赘述。

通过以上的描述可以看出,先对待使用的产品序列号进行分组,然后在每个分组内对分组中的待使用的产品序列号进行乱序,得到待使用的各个产品序列号的扰码序列,扰码序列中的相邻产品序列号之间具有较大随机性,避免了待使用的各个产品序列号的扰码序列的连续性和可预测性,降低了仿冒厂商对产品序列号的猜测碰撞攻击的可能性。

通过上述步骤200至步骤208生成产品编码之后,可以通过以下步骤100至步骤106得到产品的二维码。

步骤100、获取待编码的产品的产品编码。

步骤102、对产品编码进行处理,得到纠缠字符串。

上述步骤102包括以下步骤(1)至步骤(3):

(1)通过非对称加密算法对产品编码进行签名,得到产品编码的签字结果,并公开非对称算法的公钥和签字结果,作为第三方独立鉴别的原始数据之一,产品编码包括:产品种类编码和产品序列号;

(2)通过杂凑运算对产品编码进行特征提取,得到产品编码的数字指纹;

(3)对产品编码的签字结果和产品编码的数字指纹进行混合加密运算,得到纠缠字符串。

在上述步骤1中,采用非对称加密算法中的椭圆曲线公钥密码算法(SM2算法)对产品编码进行签名,得到产品编码的签字结果。

在上述步骤2中,采用杂凑运算中的SM3密码杂凑算法得到产品编码的数字指纹。

步骤104、对得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的验证码。

上述循环冗余校验码校验(Cyclic Redundancy Check,CRC)包括CRC16和CRC32算法,可以将较长的字符串缩短到16比特或者32比特,使得得到的验证码只有2字节或者4字节,大大缩短了验证码的长度。

步骤106、对得到的产品编码和验证码进行处理,得到作为产品的产品身份标识的二维码。

在上述步骤106中,可以将产品编码和验证码进行组合,并对组合后的编码进行处理,得到作为产品的产品身份标识的二维码。

综上所述,本实施例提供的二维码编码方法,通过对产品编码加密计算后得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的校验码,由于循环冗余校验码校验可以将较长的字符串处理成2个字节大小的字符串,这与现有技术中通过非对称加密算法得到的二维码的验证码相比,大大减少了二维码所包含的验证码字节数,使得二维码能用于液体容器等数字身份承载区域比较小的场景,且减少了二维码所占用的面积,使二维码在容器表面时不易产生弯曲,提高了二维码的可读性。

相关技术中,经过加密算法产生的产品身份标识是一种二进制的身份标识,不能直接用于网络协议传输且不适合人眼识别,如果用户无法扫码,那就不能了解产品的产品信息,为了使用户无法扫码的情况下可以了解产品的产品信息,上述二维码编码方法还包括以下步骤(1)至步骤(2):

(1)通过已编辑的Base64编码对产品身份标识进行编码,得到产品身份标识的HTTP字符串,其中,已编辑的Base64编码中第62号字符为“*”以及第63号字符为“-”;

(2)通过得到的产品身份标识和HTTP字符串,得到产品的编码图案。

在上述步骤1中,把Base 64编码字符集的第62号字符“+”,用字符“*”代替,第63号字符“/”,用字符“-”,同时,把编码的长度控制在6比特的整数倍,经过Base64编码的产品身份标识就不会有“=”出现,使得用户在不能扫描二维码的情况下,可以通过得到的HTTP字符串,访问HTTP字符串相应的网址,查看产品的产品信息。

在上述步骤2中,参见图3,就是得到产品的编码图案的一种方式,上述产品的编码图案除了图3显示的形式之外,还可以采用其他的形式,这里不再一一赘述。

综上所述,通过上述已编辑的Base64编码对产品身份标识进行编码计算,使得产品身份标识在编辑之后产生的HTTP字符串中就不会有“=”出现,不会在URL和HTTP网络传输中引起歧义,通过Base64编码得到的HTTP字符串,可以通过用户人眼识别,使得用户在无法扫码时,也可以通过HTTP字符串中记录的网址获取产品的产品信息,提高了二维码的使用效率。

通过以下示例对上述二维码编码方法作进一步描述。

该示例中包括生成产品编码的过程以及通过生成的产品编码生成相应二维码的过程。

上述生成产品编码的过程包括以下步骤(1)至步骤(5):

(1)对产品序列号取模运算,得到产品序列号的区块段基数(就是上述的分组标识);

(2)采用非对称算法对取模后的产品序列号的区块段基数进行加密,得到序号区块段基数加密字符串;

(3)把得到的区块码段基数加密字符串作为密钥,将产品序列号的区块段号作为输入,采用SM4算法加密,得到128位FPE密钥;

(4)采用FPE算法对每一个产品序列号进行格式保留加密,得到相同长度数字串作为新的序列号或者新序列号对应的数组索引的下标;

(5)按加密前产品序列号或数组下标所对应的产品序列号与加密后的产品序列号或下标所对应的产品序列号进行交换,对产品序列号进行重新排列,得到产品序列号的扰码序列。

通过以上步骤得到产品序列号之后,可以继续通过以下步骤得到产品的二维码。

二维码运算的流程包括以下步骤(10)至步骤(17):

(10)通过一个独立的安全密码对计算装置,例如能够计算公钥私钥对的USB-key,这里需要能够支持商密SM2算法的安全密码对发生器,其中SM2的曲线参数采用国密局指定的曲线参数;密钥对的签字私钥是一个大整数,公钥是一个曲线坐标,签名验证码是一对大数;

(11)用私钥和一个随机产生的大随机数对产品规格(就是上述的产品种类编码)和产品序列号组合的字符串进行签名,得到一个大整数对的签字码字符串;

(12)把产品编码和产品规格组合的字符串通过SM3算法进行单向不可逆运算,得到数据指纹;

(13)把SM2运算和SM3运算的结果进行字符加运算;

(14)对步骤13产生的字符串采用CRC16或CRC32算法进行校验和运算,得到16位或者32位校验和;

(15)把这个校验和作为产品数字身份证的防伪验证码,镶嵌在编码的后端,作为产品身份编码的组成部分。

(16)把步骤15产生的产品规格码+产品序列号+验证码的字符组合进行Base64编码,获得一个可以用Http协议传输并且人眼可识读的字符串。

(17)把步骤16产生的产品身份编码作为某一个规格产品的唯一的产品身份标识。

综上所述,通过对产品编码加密计算后得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的校验码,由于循环冗余校验码校验可以将较长的字符串处理成2个字节大小的字符串,这与现有技术中通过非对称加密算法得到的二维码的验证码相比,大大减少了二维码所包含的验证码字节数,使得二维码能用于液体容器等数字身份承载区域比较小的场景,且减少了二维码所占用的面积,使二维码在容器表面时不易产生弯曲,提高了二维码的可读性。

通过上述二维码的编码方法可以得到以下2个版本的编码结构,版本1供国内使用,版本2可以应用于国际化用途。

版本1(12个字节版本,国内应用)

上述编码字节长度12个字节,使用Base64编码,一共16字节,适合国内使用。

版本1是目前可用的编码长度中最短的版本,二进制长度为12个字节,适用于Http协议传输的Base 64编码也只有16个字节。可以做到7毫米高和宽的二维码的印刷面积上。

扩展性:1个字节表示编码版本,有256种编码结构,除了标识各种定义的版本号外,甚至有一种可能,将来可以考虑一个商品类别分配一个版本,便于商品类的行业管理,也有利于按商品类别进行行业网站的分类和导航,提高溯源系统的响应速度,降低网站的导航复杂度。

品规编码空间:采用4.5个字节表达品种规格,有11位十进制数字长度,可以完全表达中国的条形码段,而且有10倍余量来表示各级包装,完全适用于各种销售单元、物流运输不可销售单元,可变销售单元的表达。

单品编码空间:单件产品可销售单元的序列号可达11位数字,可表达687亿件单品,可以满足绝大多数产品数十年甚至数百年的产品编码需求。例如年产10亿件单品的产品,要连续生产68年才有一个轮回。而年产品60亿件的单品,连续生产10年以上,才会发生单品序号重复的问题。而品规代码有10倍以上的冗余量,还可以通过分配新的品规代码来开辟新的产品序列号空间,数十年甚至数百年内都可以做到不重复编码,也就是做到一品一码。

安全性:验证码有2个字节,也就是65536个碰撞次数,碰撞空间是药监码的6.5倍,安全强度高很多。另外,校验码采用成都天钥科技的专利技术,结合动态密码和身份认证、履历跟踪等方法,可以有效识别伪造和恶意探测。

版本2(15字节版本,全兼容的国际版本)

版本2,编码15个字节,使用Base64编码,一共20个字节,适合国际化,全球范围使用。

结构特点:

扩展性:表示编码版本号是一个字节长度的编码,可以表示256种编码结构,除了标识各种定义的版本号外,将来可以为一个商行业类别分配一个版本号,便于商品类的行业管理,也有利于按商品类别进行行业网站的分类和导航,提高溯源系统的响应速度,降低网站的导航复杂度。

品规码空间:采用5.5个字节表达品种规格,有14位十进制数字长度,可以完全表达全球范围内的EAN-13/EAN-8条形码段,另外兼容ITF-14的码段,超过10个包装等级供选择,能够满足物流运输的需要,充足的品种规格,能够满足各种商超可变销售单元的定义。各级品种包装规格编码空间完全适用于各种销售单元、物流运输单元、不可销售单元,可变销售单元的表达。

单品空间:单品可销售单元的序列号可达13位十进制数字,可表达(10995亿)万亿件单品,可以满足所有产品数百年的产品编码需求。例如年产10亿件单品的产品,要连续生产1000年才有一个轮回。而年产100亿件的单品,连续生产100年以上,才会发生单品序号重复的问题。而本编码体系中的品种规格代码有成百倍的冗余量,还可以通过分配新的品规代码来开辟新的产品序列号空间。

安全性:验证码有3.5个字节长度,也就是268435456(2.68亿)个碰撞空间,碰撞空间是药监码的2.68万倍,是银行卡的取款密码安全强度的268倍,人工尝试几乎不可能找到相同的编码,如果对机器人蛮力碰撞试探做一定的限制,能够很好地防止碰撞攻击。另外,校验码采用天钥科技的专利技术,结合动态密码和身份认证、履历跟踪等方法,可以有效识别伪造和恶意探测,大大提升仿冒监控能力,遏制假冒产品的流通。

优缺点分析:结构紧凑,编码长度较短,码空间利用率较高,能够兼容现有的码制,适应范围广。缺点是有半字节的编码,程序处理稍微多一点工作量。

编码15个字节,使用Base64编码,一共20个字节,适合国际化,全球使用。

编码规则表

表一是版本1的编码规则表,版本号占一个字节,产品规格编码占4.5个字节,产品序列号占4.5个字节,验证码占2个字节,共计12个字节。

表一

表二是版本2的编码规则表,版本号占一个字节,产品规格编码占5.5个字节,产品序列号占5个字节,验证码占3.5个字节,共计15个字节。

表二

实施例2:

参见图4,本实施例提供一种二维码编码装置,用于执行上述的二维码编码方法,包括:

产品编码获取模块400,用于获取待编码的产品的产品编码;

字符串处理模块402,用于对产品编码进行处理,得到纠缠字符串;

验证码处理模块404,用于对得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的验证码;

编码处理模块406,用于对得到的产品编码和验证码进行处理,得到作为产品的产品身份标识的二维码。

综上所述,本实施例提供的二维码编码装置,通过对产品编码加密计算后得到的纠缠字符串进行循环冗余校验码校验,得到产品编码的校验码,由于循环冗余校验码校验可以将较长的字符串处理成2个字节大小的字符串,这与现有技术中通过非对称加密算法得到的二维码的验证码相比,大大减少了二维码所包含的验证码字节数,使得二维码能用于液体容器等数字身份承载区域比较小的场景,且减少了二维码所占用的面积,使二维码在容器表面时不易产生弯曲,提高了二维码的可读性。

具体地,字符串处理模块402,包括:

签名单元,用于通过非对称加密算法对产品编码进行签名,得到产品编码的签字结果,并公开非对称算法的公钥和签字结果,作为第三方独立鉴别的原始数据之一,产品编码包括:产品种类编码和产品序列号;

特征提取单元,用于通过杂凑运算对产品编码进行特征提取,得到产品编码的数字指纹;

计算单元,用于对产品编码的签字结果和所述产品编码的数字指纹进行混合加密运算,得到纠缠字符串。

相关技术中,经过加密算法产生的产品身份标识是一种二进制的身份标识,不能直接用于网络协议传输且不适合人眼识别,如果用户无法扫码,那就不能了解产品的产品信息,为了使用户无法扫码的情况下可以了解产品的产品信息,上述装置还包括:

网址编码模块,用于通过已编辑的Base64编码对产品身份标识进行编码,得到产品身份标识的HTTP字符串,其中,已编辑的Base64编码中第62号字符为“*”以及第63号字符为“-”;

编码处理模块,用于通过得到的产品身份标识和HTTP字符串,得到产品的编码图案。

综上所述,通过上述已编辑的Base64编码对产品身份标识进行编码计算,使得产品身份标识在编辑之后产生的HTTP字符串中就不会有“=”出现,不会在URL和HTTP网络传输中引起歧义,通过Base64编码得到的HTTP字符串,可以通过用户人眼识别,使得用户在无法扫码时,也可以通过HTTP字符串中记录的网址获取产品的产品信息,提高了二维码的使用效率。

为了生成待使用的产品编码,上述二维码编码装置还包括:

产品序列号获取模块,用于按照各个产品序列号生成的顺序,获取待使用的各个产品序列号;

乱序模块,用于对排序后的各个产品序列号进行乱序,得到待使用的各个产品序列号的扰码序列;

序列号获取模块,用于当获取到序列号使用指令时,从扰码序列中获取一个待使用的产品序列号;

种类确定单元,用于根据预设的产品与产品种类编码的对应关系,确定待编码的产品的产品种类编码;

产品编码生成单元,用于将确定的产品种类编码和获取的产品序列号进行组合,生成所述产品的产品编码。

相关技术中,由于产品编码中包含产品种类编码和产品序列号,产品种类编码用于产品的类别描述,产品序列号用于区别某一种类的产品在该类别中的唯一个体。产品序列号的编码一般情况下是按顺序计算,存在一定的连续性,这种联系产生一种可预测性,为了降低仿冒厂商对包装序列中产品序列号的猜测碰撞攻击的可能性,上述乱序模块,包括:

序号分配单元,用于向排序后的各个产品序列号分配排序序号;

分组单元,用于根据预设的序列号分组所包括的产品序列号数量,对获取到的各个产品序列号进行分组;

分组标识计算单元,用于通过各个产品序列号分配到的排序序号和序列号分组所包括的产品序列号数量,计算得到各个产品序列号被分配到的序列号分组的分组标识;

第一加密单元,用于对计算得到的分组标识进行满射格式保留加密算法计算,得到与各分组标识对应的分组标识一次加密字符串;

第二加密单元,用于采用格式保留算法对分组标识一次加密字符串再次进行加密,得到与各分组标识对应的分组标识二次加密字符串;

乱序序号确定单元,用于根据得到的与各分组标识对应的分组标识二次加密字符串,对各分组标识对应的序列号分组中的各产品序列号进行乱序操作,得到各产品序列号乱序操作后所在序列号分组中的乱序序号;

乱序单元,用于根据得到的乱序序号,对各序列号分组中的产品序列号进行重新排序,得到待使用的各个产品序列号的扰码序列。

通过以上的描述可以看出,先对待使用的产品序列号进行分组,然后在每个分组内对分组中的待使用的产品序列号进行乱序,得到待使用的各个产品序列号的扰码序列,扰码序列中的相邻产品序列号之间具有较大随机性,避免了待使用的各个产品序列号的扰码序列的连续性和可预测性,降低了仿冒厂商对产品序列号的猜测碰撞攻击的可能性。

本发明实施例所提供的进行二维码编码方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1