著录项信息
专利名称 | 一种二维码的生成方法及其应用 |
申请号 | CN201410577976.5 | 申请日期 | 2014-10-24 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2015-02-04 | 公开/公告号 | CN104331728A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06K19/06 | IPC分类号 | G;0;6;K;1;9;/;0;6;;;G;0;6;Q;3;0;/;0;0;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 安徽农业大学 | 申请人地址 | 安徽省合肥市包河区延安路7号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 安徽国科检测科技有限公司 | 当前权利人 | 安徽国科检测科技有限公司 |
发明人 | 张友华;陈莹;赵永鑫;王庆人;胡嘉伟;毛瑞;彭琼琼;金文林;吴骏澜;徐秀云;王萍 |
代理机构 | 安徽省合肥新安专利代理有限责任公司 | 代理人 | 何梅生 |
摘要
本发明公开了一种二维码的生成方法及其应用,其特征是按如下步骤进行:1、生成溯源码;2、生成前缀码;3生成Y位验证码;4将溯源码、前缀码和Y位验证码存入防伪数据库中,并将溯源码和前缀码进行合并后利用条码生成器生成初始二维码;将Y位验证码嵌入初始二维码的中间位置,从而形成二维码。本发明能够快速、稳定的生成大量具有高防伪性、难以被仿造的二维码,从而有效保证二维码的唯一性,防止被复制或者重复使用。
1.一种二维码的生成方法,其特征是按如下步骤进行:
步骤1、定义变量i,初始化i=1;
步骤2、生成溯源码;
步骤2.1、利用式(1)获取溯源码的区间长度Rl;
式(1)中,l表示所述溯源码的长度;n表示生成所述溯源码的个数,Rmax表示随机函数Rand()的最大值;
步骤2.2、利用式(2)生成第i个溯源码Ri:
Ri=(i-1)×Rl+Rand(Rl)1≤i≤n (2)
步骤3、生成前缀码;
设置访问网址url和自定义参数,由所述访问网址url和自定义参数构成所述前缀码;
步骤4、生成Y位验证码;
步骤4.1、设置一维数组Arr[];
所述一维数组Arr[]的元素是由字母和数字组成,定义所述一维数组Arr[]的长度为L;
步骤4.2、利用随机函数Rand(L)生成一个随机数m;由所述随机数m获得所述一维数组Arr[]中第m-1个元素Arr[m-1];1≤m≤L;
步骤4.3、重复执行Y次步骤4.2,从而获得第i个溯源码Ri对应的Y位验证码;
步骤5、将所述第i个溯源码Ri、前缀码和Y位验证码存入防伪数据库中,并将所述第i个溯源码Ri和前缀码进行合并后利用条码生成器生成第i个初始二维码;将所述Y位验证码嵌入所述第i个初始二维码的中间位置,从而形成第i个二维码;
步骤6、将i+1赋值给i并返回步骤2.2执行,直到获得n个二维码。
一种二维码的生成方法及其应用\n技术领域\n[0001] 本发明涉及二维码防伪技术领域,具体为一种二维码的生成方法及其应用。\n背景技术\n[0002] 目前,基于二维码的防伪手段较多采用“扫描+输入”的方式:下载指定的手机客户端并安装,通过手机客户端“扫描”二维码链接至相应的网站验证界面,在已打开的验证界面中“输入”验证码,再由服务器完成验证码真伪的验证工作,并将验证结果信息返回给客户端,完成对产品真伪的验证。该防伪手段有其局限性:\n[0003] 1、通过一个验证码验证产品的真伪,方法单一,防伪手段简单。\n[0004] 2、需要下载指定的手机客户端并安装,且验证码需要消费者手动输入,费时费力。\n[0005] 3、二维码、验证码容易被复制与重复使用。\n发明内容\n[0006] 本发明是为克服现有技术存在的不足之处,提出一种二维码的生成方法及其应用,能够快速、稳定的生成大量具有高防伪性、难以被仿造的二维码,从而有效保证二维码的唯一性,防止被复制或者重复使用。\n[0007] 本发明为解决技术问题采用如下技术方案:\n[0008] 本发明一种二维码的生成方法的特点是按如下步骤进行:\n[0009] 步骤1、定义变量i,初始化i=1;\n[0010] 步骤2、生成溯源码;\n[0011] 步骤2.1、利用式(1)获取溯源码的区间长度Rl;\n[0012]\n[0013] 式(1)中,l表示所述溯源码的长度;n表示生成所述溯源码的个数,Rmax表示随机函数Rand()的最大值;\n[0014] 步骤2.2、利用式(2)生成第i个溯源码Ri:\n[0015] Ri=(i-1)×Rl+Rand(Rl) 1≤i≤n (2)\n[0016] 步骤3、生成前缀码;\n[0017] 设置访问网址url和自定义参数,由所述访问网址url和自定义参数构成所述前缀码;\n[0018] 步骤4、生成Y位验证码;\n[0019] 步骤4.1、设置一维数组Arr[];\n[0020] 所述一维数组Arr[]的元素是由字母和数字组成,定义所述一维数组Arr[]的长度为L;\n[0021] 步骤4.2、利用随机函数Rand(L)生成一个随机数m;由所述随机数m获得所述一维数组Arr[]中第m-1个元素Arr[m-1];1≤m≤L;\n[0022] 步骤4.3、重复执行Y次步骤4.2,从而获得第i个溯源码Ri对应的Y位验证码;\n[0023] 步骤5、将所述第i个溯源码Ri、前缀码和Y位验证码存入防伪数据库中,并将所述第i个溯源码Ri和前缀码进行合并后利用条码生成器生成第i个初始二维码;将所述Y位验证码嵌入所述第i个初始二维码的中间位置,从而形成第i个二维码;\n[0024] 步骤6、将i+1赋值给i并返回步骤2.2执行,直到获得n个二维码。\n[0025] 本发明一种二维码的防伪验证方法的特点是按如下步骤进行:\n[0026] 步骤1、初步判断所述待验证二维码的真伪:\n[0027] 判断所述待验证二维码的中间位置是否包含待检验验证码;若不包含,则表示待验证二维码为伪码,否则对待验证二维码进行扫描,获得待验证二维码的扫描结果,判断所述扫描结果是否包含所述访问网址url,若没有包含,则表示所述待验证二维码为伪码;否则,读取所述扫描结果中的待验证溯源码并执行步骤2;\n[0028] 步骤2、获得扫描时间和扫描地点:\n[0029] 根据所述访问网址url跳转到相应的防伪网站,利用所述防伪网站提供的查询功能获得扫描时间和由经纬度信息构成的扫描地点;并从待验证二维码中提取待验证溯源码;由所述扫描时间、扫描地点和待验证溯源码形成一条扫码记录并存入扫码数据库中;\n[0030] 步骤3、判断所述待验证溯源码的真伪:\n[0031] 将所述待验证溯源码与所述防伪数据库中的溯源码进行一一比对,若比对成功,则获得所述待验证溯源码为溯源码Ri,并执行步骤4,否则,表示所述待验证二维码为伪码;\n[0032] 步骤4、判断所述待检验验证码的真伪:\n[0033] 根据所述溯源码Ri从所述防伪数据库中获得相应的第i个Y位验证码;将所述待检验验证码与所述第i个Y位验证码进行比对,若比对成功,则表示所述待验证二维码为真码;\n否则,所述待验证二维码为伪码。\n[0034] 本发明所述的二维码的防伪验证方法的特点也在于,利用所述溯源码Ri按如下步骤进行风险预警:\n[0035] 步骤1、统计所述溯源码Ri在所述扫码数据库中的扫码记录,获得所述溯源码Ri的扫码次数j,并将所述扫码次数j与所设定的扫码次数阈值k进行比较,其中k≥2;在扫码次数j超过扫码次数阈值k时,执行步骤2;\n[0036] 步骤2、根据所述溯源码Ri的扫码记录,获得所述溯源码Ri的所有扫描地点的经纬度信息,由所述经纬度信息获得所有扫描地点之间的距离值d,选出最大的距离值并与所设定的距离阈值进行比较,当最大的距离值超出所述距离阈值时进行风险预警。\n[0037] 与现有技术相比,本发明的有益效果在于:\n[0038] 1、本发明通过利用随机函数随机生成码的方法生成一种复杂的难以被仿造的二维码,保证每一个生成的二维码的唯一性和随机性,增加了二维码被解析的难度,解决了现有技术中二维码容易被复制与重复使用的问题;\n[0039] 2、本发明通过扫码工具扫描,利用url网址在手机浏览器或者其他内置浏览器软件中显示,解决现有技术中需要用户下载特定的手机客户端并安装的问题,不需要手动输入,提高了用户体验度,增加便捷性;\n[0040] 3、本发明通过现有技术中相对稳定的windows系统平台和成熟的c#语言开发技术,保证了生成二维码的稳定性和高效性,从而能够快速稳定的生成大数据量的二维码;\n[0041] 4、本发明通过随机函数随机生成溯源码、验证码,溯源码、验证码都具有随机性,没有可循的规律,使得无法按照规律进行大批量伪造,提高了二维码的特殊性和难伪造性;\n[0042] 5、本发明通过扫描产品二维码,层层与数据库比对验证码、前缀码和溯源码,多重验证,三重防伪保障,提高了产品二维码的真实可靠性,防伪手段复杂、防伪系数高,解决了现有技术中通过一个验证码验证产品的真伪、方法单一,防伪手段简单的问题;\n[0043] 6、本发明通过记录统计扫码时间、次数和扫描地点,能够查询扫码产品的最终销售信息,对于不法分子复制伪造正品的溯源码,通过扫码次数和计算不同扫码地点之间的距离最大值,准确严谨的判定二维码是否被复制伪造以及复制伪造严重程度,对复制伪造程度进行风险等级预警,并合理的给出相应的解决方案,提高基于二维码的防伪可靠性。\n附图说明\n[0044] 图1是本发明判定待验证二维码防伪验证方法流程图;\n[0045] 图2是本发明利用二维码的防伪验证方法流程图。\n具体实施方式\n[0046] 本实施例中,一种二维码的生成方法是按如下步骤进行:\n[0047] 步骤1、定义变量i,初始化i=1;\n[0048] 步骤2、批量生成溯源码;\n[0049] 步骤2.1、利用式(1)获取溯源码的区间长度Rl;\n[0050]\n[0051] 式(1)中,l表示溯源码的长度;n表示生成溯源码的个数,Rmax表示随机函数Rand()的最大值;\n[0052] 假设溯源码的长度l=9,则溯源码是从000000000到99999999之间产生,即可最多生成1000000000个溯源码;假设产品需要生成10万个溯源码,即n=100000,则通过式(1)计算区间长度 本实例是在windows环境下运行,取随机函数Rand()的最大值Rmax=32767,判断 取Rl=10000,即相当于从10000个溯源码中随机无\n规律的生成1个溯源码;\n[0053] 步骤2.2、利用式(2)生成第i个溯源码Ri:\n[0054] Ri=(i-1)×Rl+Rand(Rl) 1≤i≤n (2)\n[0055] 本实施例中,当i=1时,假设Rand(10000)=3472,则根据式(2)得第一个溯源码R1=000003472,通过循环计算获得n=100000个溯源码{R1,R2,R3,...,Ri,...,R100000},由于i的不同,生成的溯源码也各不相同;产品伪造的溯源码与溯源码Ri相同的概率为个溯源码全部相同的概率为 从而保障最终二维码的防伪强\n度;\n[0056] 步骤3、生成前缀码;\n[0057] 设置访问网址url和自定义参数,由访问网址url和自定义参数构成前缀码;访问网址url为扫描二维码后对应跳转界面的网址,自定义参数是根据用户需求添加参数;如本实例中前缀码为http://www.seediot.com/sy.html?m=48600147-500001145Q,其中访问网址url为http://www.seediot.com/sy.html,自定义参数由企业组织机构代码48600147-\n5、传输参数m、品种代码00001和日期代码145Q组成,145Q代表2014年5月26日;\n[0058] 步骤4、生成Y位验证码;\n[0059] 步骤4.1、设置一维数组Arr[];\n[0060] 定义一维数组Arr[]的长度为L;在本实例中,一维数组Arr[]的元素是由二十六个大小写字母和十位阿拉伯数字组成,则一维数组Arr[]的长度L=62;将二十六个大小写字母和十位阿拉伯数字按照顺序依次存入一维数组Arr[]中,即Arr[0]=a,Arr[1]=b,Arr[2]=c,…,Arr[60]=8,Arr[61]=9;\n[0061] 步骤4.2、利用随机函数Rand(L)生成一个随机数m;由随机数m获得一维数组Arr[]中第m-1个元素Arr[m-1];1≤m≤L;在本实例中,假设利用随机函数Rand(62)生成的随机数m=3,则相应的一维数组Arr[m-1]表示一维数组Arr[]中第2个元素Arr[2]=c;\n[0062] 步骤4.3、重复执行Y次步骤4.2,从而获得第i个溯源码Ri对应的Y位验证码;本实例中取Y为4,重复执行4次步骤4.2,假设当i=1时得到的四位验证码为c2A1,与步骤2中生成的溯源码R1相对应,进一步增加防伪的强度;\n[0063] 步骤5、将第i个溯源码Ri、前缀码和Y位验证码存入防伪数据库中,并将第i个溯源码Ri和前缀码进行合并后利用条码生成器生成第i个初始二维码,将Y位验证码嵌入所述第i个初始二维码的中间位置,从而形成第i个二维码;本实施例中,假设当i=1时,第一个初始二维码为http://www.seediot.com/sy.html?m=48600147-500001145Q000003472,利用现有条码生成器工具,将Y位验证码c2A1嵌入初始二维码的中间位置,从而形成第i=1个二维码;\n[0064] 步骤6、将i+1赋值给i并返回步骤2.2执行,直到获得n个二维码,本实例中,需要循环执行1000000次,最终得到需要的1000000个二维码。\n[0065] 如图1所示,一种二维码的防伪验证方法是按如下步骤进行:\n[0066] 步骤1、初步判断待验证二维码的真伪:\n[0067] 判断待验证二维码的中间位置是否包含待检验验证码;若不包含,则表示待验证二维码为伪码,否则对待验证二维码进行扫描,获得待验证二维码的扫描结果,判断扫描结果是否包含访问网址url,若没有包含,则表示待验证二维码为伪码;否则,读取扫描结果中的待验证溯源码并执行步骤2;\n[0068] 具体实施中,首先通过肉眼观察待验证二维码中间位置是否有四位的验证码,将不包含四位验证码的待验证二维码判定为伪码初步过滤,对包含四位验证码的待验证二维码进行扫描,如果不能够跳转到访问网址url对应的防伪网站http://www.seediot.com/sy.html,则表示待验证二维码不包含访问网址url,判定为伪码并过滤;\n[0069] 步骤2、获得扫描时间和扫描地点:\n[0070] 根据访问网址url跳转到相应的防伪网站,利用防伪网站提供的查询功能获得扫描时间和由经纬度信息构成的扫描地点,本实例是利用html5界面中Geolocation函数获取经纬度并从待验证二维码http://www.seediot.com/sy.html?m=48600147-\n500001145Q000003472中提取待验证溯源码000003472;由扫描时间、扫描地点和待验证溯源码形成一条扫码记录并存入扫码数据库中;\n[0071] 步骤3、判断待验证溯源码的真伪:\n[0072] 将待验证溯源码与防伪数据库中的溯源码进行一一比对,若比对成功,则获得待验证溯源码为溯源码Ri,并执行步骤4,否则,表示待验证二维码为伪码;假设当i=1时,待验证溯源码为000003472,通过与防伪数据库中溯源码进行一一比对,找到溯源码R1=\n000003472,则待验证溯源码为R1;\n[0073] 步骤4、判断待检验验证码的真伪:\n[0074] 根据溯源码Ri从防伪数据库中获得相应的第i个Y位验证码;将待检验验证码与第i个Y位验证码进行比对,若比对成功,则表示待验证二维码为真码;否则,待验证二维码为伪码;\n[0075] 假设当i=1时,待验证验证码为c2A1,通过溯源码R1=000003472从防伪数据库中获得相应的第1个四位验证码c2A1,与待检验验证码比对成功,表示二维码为真码。\n[0076] 如图2所示,一种利用二维码的防伪验证方法,是利用溯源码Ri并按如下步骤进行风险预警:\n[0077] 步骤1、本实例中将风险预警分为三个等级:轻度风险预警,中度风险预警,重度风险预警;不同等级风险预警设置扫码次数阈值k的值不同,如设定轻度风险预警扫码次数阈值k为2,中度风险预警扫码次数阈值k为50,重度风险预警扫码次数阈值k为100;统计溯源码Ri在扫码数据库中的扫码记录,获得溯源码Ri的扫码次数j,假定j为56,并将扫码次数j与所设定的扫码次数阈值k进行比较,其中k≥2,j=56>k=50;在扫码次数j超过扫码次数阈值k时,执行步骤2;\n[0078] 步骤2、由于存在个人多次扫描的情况,故对于在小于一定距离的多次扫码不进行风险预警;具体实施中根据溯源码Ri的扫码记录,获得溯源码Ri的所有扫描地点的经纬度信息,假定其中一个扫描地点为A点,另一个扫描地点为B点,Aj表示A点的经度,Aw表示A点的纬度,Bj表示B点的经度,Bw表示B点的纬度,根据式(3)计算A点与B点之间的距离d的值,根据式(3)计算由经纬度信息获得所有扫描地点之间的距离值d,选出最大的距离值,假设距离最大值为5000m,距离阈值为500m,并与所设定的距离阈值进行比较,当最大的距离值超出距离阈值时进行风险预警;\n[0079]\n[0080] 本实例中,最大距离值5000大于距离阈值500,根据步骤1中的扫码次数50≤j=56<100和风险预警等级,最终防伪验证的判定结果为进行中度风险预警。
法律信息
- 2020-03-27
专利权的转移
登记生效日: 2020.03.09
专利权人由安徽农业大学变更为安徽国科检测科技有限公司
地址由230036 安徽省合肥市长江西路130号变更为230051 安徽省合肥市包河区延安路7号
- 2017-04-19
- 2015-03-11
实质审查的生效
IPC(主分类): G06K 19/06
专利申请号: 201410577976.5
申请日: 2014.10.24
- 2015-02-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-10-31
|
2006-04-29
| | |
2
| |
2011-03-30
|
2010-11-09
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |