二维码生成、验证的方法及装置与流程

文档序号:21890836发布日期:2020-08-18 17:50阅读:415来源:国知局
本发明涉及数据处理
技术领域
:,尤其是涉及一种二维码生成、验证的方法及装置。
背景技术
::人们的生活中充满了二维码。例如,看网页需要扫码,加好友需要扫码,付款需要扫码。二维码是一种能够存储信息的特定格式图片。随着移动智能和物联网的快速发展,具有高效的信息传递和存储功能的二维码逐渐被应用到各行各业,例如快捷支付领域。二维码的出现给传统的银行网银支付带来巨大挑战同时也带来了机遇,二维码逐渐成为银行业务,例如高频小额快捷支付业务、主动营销业务、客户产品推荐和互动等业务的有力工具。但随着二维码在银行的开放式运用,二维码内存储的信息容易被篡改,从而扫码用户的信息被盗用,甚至危害扫码用户的财产安全。技术实现要素:针对上述问题,本申请提供一种二维码生成、验证的方法及装置,用于解决二维码内存储的信息容易被篡改的问题。第一方面,本申请实施例提供一种二维码生成的方法,用于区块链,所述方法包括:获取所述区块链上的私链账户发布的信息;将所述私链账户发布的信息与私链账户的名称通过哈希运算生成所述私链账户发布的信息对应的身份识别号码id;将所述id与所述私链账户发布的信息通过哈希运算生成第一哈希值与二维码,并将所述二维码存储在所述区块链中;将所述id与所述第一哈希值通过哈希运算生成第二哈希值,并将所述第二哈希值存储在所述区块链中,以便验证待验证的二维码。可选的,所述获取所述区块链上的私链账户发布的信息,包括:主线程获取所述私链账户发布的二维码,并发送给子线程;所述子线程将所述二维码解析为二维码矩阵;其中,所述二维码矩阵包括所述私链账户发布的信息。可选的,本申请实施例还提供一种二维码验证的方法,用于上述生成的二维码进行验证,所述方法包括:在所述区块链中获取待验证的二维码;解析所述待验证的二维码中的id与所述待验证的二维码中的哈希值;将所述待验证的二维码中的id与所述待验证的二维码中的哈希值通过哈希运算生成第三哈希值;若所述第三哈希值与所述第二哈希值一致,则所述待验证的二维码为所述私链账户发布的二维码。可选的,所述方法还包括:当所述第二哈希值与所述第三哈希值一致时,根据所述待验证的二维码的id在所述区块链中获取所述私链账户发布的信息。可选的,所述方法还包括:当所述第二哈希值与所述第三哈希值不一致时,提示所述待验证二维码不安全。第二方面,本申请提供一种二维码生成的装置,用于区块链,所述装置包括:信息获取单元、id生成单元、二维码生成单元与第二哈希值生成单元;所述信息获取单元,用于获取所述区块链上的私链账户发布的信息;所述id生成单元,用于将所述私链账户发布的信息与私链账户的名称通过哈希运算生成所述私链账户发布的信息对应的身份识别号码id;所述二维码生成单元,用于将所述id与所述私链账户发布的信息通过哈希运算生成第一哈希值与二维码,并将所述二维码存储在所述区块链中;所述第二哈希值生成单元,用于将所述id与所述第一哈希值通过哈希运算生成第二哈希值,并将所述第二哈希值存储在所述区块链中,以便验证待验证的二维码。可选的,所述装置包括主线程单元与子线程单元;所述主线程单元,用于主线程获取所述私链账户发布的二维码,并发送给子线程;所述子线程单元,用于所述子线程将所述二维码解析为二维码矩阵;其中,所述二维码矩阵包括所述私链账户发布的信息。可选的,本申请实施例还提供一种二维码验证的装置,用于上述生成的二维码进行验证,所述装置包括:二维码获取单元、解析单元、第三哈希值生成单元与验证单元;所述二维码获取单元,用于在所述区块链中获取待验证的二维码;所述解析单元,用于解析所述待验证的二维码中的id与所述待验证的二维码中的哈希值;所述第三哈希值生成单元,用于将所述待验证的二维码中的id与所述待验证的二维码中的哈希值通过哈希运算生成第三哈希值;所述验证单元,用于若所述第三哈希值与所述第二哈希值一致,则所述待验证的二维码为所述私链账户发布的二维码。可选的,所述装置还包括信息获取单元,用于当所述第二哈希值与所述第三哈希值一致时,根据所述待验证的二维码的id在所述区块链中获取所述私链账户发布的信息。可选的,所述验证单元还用于当所述第二哈希值与所述第三哈希值不一致时,提示所述待验证二维码不安全。相对于现有技术,本申请上述技术方案的优点在于:本申请实施例提供的二维码的生成和验证方法,其中二维码的生成方法通过哈希运算生成长度固定的id,将私链账户的名称和私链账户发布的信息通过id的形式结合在一起,不仅将私链账户发布的信息以id的形式从明文的形式变为暗文的形式,还将私链账户的名称与私链账户发布的信息对应起来。固定长度的id与二维码信息内容绑定且不会随着二维码内容信息的大小而发生长度变化,有效的提高了数据的鲁棒性和安全性,大大提高了二维码编码信息空间;再将id通过两次哈希运算保存在区块链中,由于哈希运算具有单向性,一旦二维码内容被篡改,再次通过哈希运算得到的哈希值就会随之改变由此后续实现二维码信息摘要的私有链的链上校验,有效提升银行的数据安全性和客户的资金安全。二维码的验证方法通过解析待验证二维码中的id与哈希值,利用该哈希值进行哈希运算生成第三哈希值,将第三哈希值与保存在区块链中的第二哈希值进行比对,二者相同证明该待验证的二维码是私链账户发布的二维码,未被篡改。去中心化的安全验证可以有效减轻传统的中心化的验证服务器的压力,且大大提高了数据的安全性。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本申请提供的一种二维码生成方法的流程图;图2为本申请提供的一种二维码验证方法的流程图;图3为本申请提供的一种二维码生成装置的示意图;图4为本申请提供的一种二维码验证装置的示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在银行的很多金融服务的场景中,银行将发布的信息内容通过二维码发送给用户,用户扫描二维码获得二维码内蕴含的信息。二维码具有“容易被快速识别”的特性,但是,易识别也带来了易被仿制的副作用。即在获悉二维码样式或者内容的同时,二维码所保护的内容就以明文的形式展示给扫码用户;同时,但是,目前二维码生成和验证技术大多基于javascript、谷歌或者jquery的插件等开源软件。所以,仿造者可以轻松完成相同内容的编辑,致使二维码的防篡改能力弱。从而扫码用户的信息被盗用,甚至危害扫码用户的财产安全。发明人经过研究发现,二维码的防篡改能力弱是由于二维码信息安全管理未引入第三方的认证机构进行身份认证。即在用户申请在扫码时,没有再次提交二维码信息给第三方机构等待验证通过才能进行下一步操作,也没有引入可信服务器完成在线安全验证,致使二维码在传播过程中发生了篡改,也不会有人发现,从而扫码用户的信息被盗用,甚至危害扫码用户的财产安全。进一步的,二维码的有限编码空间和数字证书的高信息量往往存在冲突,引入第三方认证机构的缺点比较依赖中心化,依赖于服务器的动态验证在海量银行客群使用情景下对二维码的解码和数字签名完全依赖服务器的性能,在银行的很多场景中,由于银行客群基数大且营销活动频繁,在银行的营销高峰时扫码和验码很容易造成银行中心化服务器的服务中断甚至宕机。为了解决上述问题,在本申请实施例提供了二维码的生成和验证方法,二维码生成方法包括:获取所述区块链上的私链账户发布的信息;将所述私链账户发布的信息与私链账户的名称通过哈希运算生成所述私链账户发布的信息对应的身份识别号码id;将所述id与所述私链账户发布的信息通过哈希运算生成第一哈希值与二维码,并将所述二维码存储在所述区块链中;将所述id与所述第一哈希值通过哈希运算生成第二哈希值,并将所述第二哈希值存储在所述区块链中,以便验证待验证的二维码。通过哈希运算生成长度固定的id,将私链账户的名称和私链账户发布的信息通过id的形式结合在一起,不仅将私链账户发布的信息以id的形式从明文的形式变为暗文的形式,还将私链账户的名称与私链账户发布的信息对应起来。固定长度的id与二维码信息内容绑定且不会随着二维码内容信息的大小而发生长度变化,有效的提高了数据的鲁棒性和安全性,大大提高了二维码编码信息空间;再将id通过两次哈希运算保存在区块链中,由于哈希运算具有单向性,一旦二维码内容被篡改,再次通过哈希运算得到的哈希值就会随之改变由此后续实现二维码信息摘要的私有链的链上校验,有效提升银行的数据安全性和客户的资金安全。二维码验证方法包括:在所述区块链中获取待验证的二维码;解析所述待验证的二维码中的id与所述待验证的二维码中的哈希值;将所述待验证的二维码中的id与所述待验证的二维码中的哈希值通过哈希运算生成第三哈希值;若所述第三哈希值与所述第二哈希值一致,则所述待验证的二维码为所述私链账户发布的二维码。通过解析待验证二维码中的id与哈希值,利用该哈希值进行哈希运算生成第三哈希值,将第三哈希值与保存在区块链中的第二哈希值进行比对,二者相同证明该待验证的二维码是私链账户发布的二维码,未被篡改。去中心化的安全验证可以有效减轻传统的中心化的验证服务器的压力,且大大提高了数据的安全性。下面结合附图,通过实施例来详细说明本申请实施例中用户分类的方法和相关装置的具体实现方式。参见图1,图1是本申请提供的一种二维码生成方法的流程图。在本实施例中,所述方法例如可以包括以下步骤:s101:获取所述区块链上的私链账户发布的信息。需要说明的是,在区块链中,生成二维码之前,应该先获取需要发布的信息。该信息可以是私链账户发布的信息。在一种可能实现的方式中,可以通过主线程获取私链账户发布的二维码,然后由主线程发送给子线程,然后子线程将该二维码解析为二维码矩阵;其中,所述二维码矩阵包括所述私链账户发布的信息。可以利用javascript主线程实例化一个工作对象,从web页面获取私链账户发布的二维码,将获取的二维码封装成js数据对象,以便操作智能合约。然后将封装的数据对象发送给子线程。主程序实时监听子程序状态信息。需要说明的是,数据对象包含二维码的内容信息、编码信息、纠错等级信息等,其中内容信息可以为文本和营销网址链接等信息等。子线程接收到主线程的数据对象后生成二维码矩阵信息,然后按照二维码的编码标准计算生成二维码的“0”、“1”矩阵,并将矩阵信息发送主线程。主线程获得二维码中包括的私链账户发布的信息。需要说明的是,在利用javascript主线程实例化一个工作对象之前还可以检查搭建私有链与前端的连通性。验证实例初始化成功后,继续检测当前网络及账户信息。s102:将所述私链账户发布的信息与私链账户的名称通过哈希运算生成所述私链账户发布的信息对应的身份识别号码id。主线程收到子线程传来的二维码矩阵数据后,将私链的账户名和该账户发布的二维码内容通过哈希运算生成与二维码内容唯一对应的id,且该id的长度固定。可以理解的是,哈希函数,又称散列算法,把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(或哈希值)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。需要说明的是,id的长度由哈希运算采用的具体算法决定,本申请实施例不限定id的长度。例如,如当采用sha-256算法时,对于任意长度的二维码内容,sha256都会产生一个256bit长度的哈希值。需要说明的是,可以在将私链账户发布的信息和该私链账户通过哈希运算生成的值进行数字签名后,再生成id。采用数字签名技术可以实现银行各类业务场景中二维码信息的分布式存储,能够弱化传统银行的中心化服务器的扫码和验码压力。s103:将所述id与所述私链账户发布的信息通过哈希运算生成第一哈希值与二维码,并将所述二维码存储在所述区块链中。将生成的id与二维码的内容通过哈希运算生成第一哈希值,并生成可以扫描的二维码,将该二维码存储在区块链中,以便用户可以在区块链中获取该二维码,从而获取私链账户发布的信息。通过将哈希计算后二维码信息存储在区块链平台中,可以有效解决银行二维码的被恶意篡改导致用户资金损失的情况发生,增加数据的可信度和安全性,同时也为维护商业银行的社会信誉提供了有力的技术支撑,社会效益和经济效益明显。需要说明的是,可以将id、二维码内容和第一哈希值作为编写智能合约脚本的参数。然后编写的智能合约脚本发送到智能合约编译器solc编译,获取以太坊虚拟机的二进制代码,并通过web3.js接口与前端生成模块交互。然后部署智能合约到区块链网络中并获取合约地址,通过ganache发布到网络中,为生成二维码的前端提供调用智能合约的基础,以便用户获取二维码。s104:将所述id与所述第一哈希值通过哈希运算生成第二哈希值,并将所述第二哈希值存储在所述区块链中,以便验证待验证的二维码。将id与第一哈希值通过哈希运算生成第二哈希值,并保存在区块中。由于哈希运算具有单向性,即在一个方向上工作,从预映射的值很容易计算其哈希值,但要产生一个预映射的值使其哈希值等于一个特殊值却是很难的。因此可以通过第二哈希值验证待验证的二维码是否被篡改过,以实现二维码信息摘要的私有链的链上校验,有效提升银行的数据安全性和客户的资金安全。本申请实施例提供了一种二维码生成的方法包括:获取所述区块链上的私链账户发布的信息;将所述私链账户发布的信息与私链账户的名称通过哈希运算生成所述私链账户发布的信息对应的身份识别号码id;将所述id与所述私链账户发布的信息通过哈希运算生成第一哈希值与二维码,并将所述二维码存储在所述区块链中;将所述id与所述第一哈希值通过哈希运算生成第二哈希值,并将所述第二哈希值存储在所述区块链中,以便验证待验证的二维码。通过哈希运算生成长度固定的id,将私链账户的名称和私链账户发布的信息通过id的形式结合在一起,不仅将私链账户发布的信息以id的形式从明文的形式变为暗文的形式,还将私链账户的名称与私链账户发布的信息对应起来。固定长度的id与二维码信息内容绑定且不会随着二维码内容信息的大小而发生长度变化,有效的提高了数据的鲁棒性和安全性,大大提高了二维码编码信息空间;再将id通过两次哈希运算保存在区块链中,由于哈希运算具有单向性,一旦二维码内容被篡改,再次通过哈希运算得到的哈希值就会随之改变由此后续实现二维码信息摘要的私有链的链上校验,有效提升银行的数据安全性和客户的资金安全。本申请实施例不仅提供一种二维码的生成方法,还提供一种二维码的验证方法。参见图2,图2是本申请提供的一种二维码验证方法的流程图。在本实施例中,所述方法例如可以包括以下步骤:s201:在所述区块链中获取待验证的二维码。为了保证用户的信息安全,在用户想要扫码之前,需要判断该二维码是否为私链用户发布的二维码,即需要判断二维码是否被篡改。具体地,可以获取用户想要扫码的二维码,即待验证的二维码。s202:解析所述待验证的二维码中的id与所述待验证的二维码中的哈希值。获取待验证的二维码后,该二维码应该是私链用户发布的二维码,应具有id与哈希值。解析待验证的二维码,获得待验证的二维码中包括的id与哈希值。s203:将所述待验证的二维码中的id与所述待验证的二维码中的哈希值通过哈希运算生成第三哈希值。由于哈希运算具有单向性,若想通过区块链平台中保存的第二哈希值验证待验证的二维码是否被篡改过,应该再进行一次哈希运算,即将待验证二维码中解析出的id与哈希值进行哈希运算,生成第三哈希值。s204:判断所述第三哈希值与所述第二哈希值是否一致。s205:若所述第三哈希值与所述第二哈希值一致,则所述待验证的二维码为所述私链账户发布的二维码。由于哈希值符合默克尔树思想,即默克尔树的任何子节点的输入变更都会导致默克尔树节点的值的变化的特点。也就是说,一旦二维码的内容发生改变,其底层的叶子节点的任何数据变动都会逐级向上传递到父节点,导致最后生成的哈希值也发生变化。若第三哈希值与第二哈希值一致,则该待验证的二维码为私链账户发布的二维码,并未被篡改,是安全的二维码,用户可以扫描该二维码。例如,安全验证通过的二维码通过html5的canvas或者table渲染成二维码图片信息展现给客户扫码,业务操作正常进行。需要说明的是,扫描该安全的二维码后,不会直接获得私链账户发布的信息内容,而是获得id与哈希值。由于id与私链账户发布的信息具有对应关系,可以通过该id获得保存在区块链中的私链账户发布的信息。s206:若第三哈希值与第二哈希值不一致,则该待验证的二维码不是私链账户发布的二维码,提示用户待验证的二维码不安全,不能进行扫码操作。只有通过安全内容验证之后才能通过id信息从区块链中获取要发布的二维码内容图片信息执行正常的扫码操作,去中心化的安全验证可以有效减轻传统的中心化的验证服务器的压力,且大大提高了数据的安全性。本申请实施例提供一种二维码验证的方法包括:在所述区块链中获取待验证的二维码;解析所述待验证的二维码中的id与所述待验证的二维码中的哈希值;将所述待验证的二维码中的id与所述待验证的二维码中的哈希值通过哈希运算生成第三哈希值;若所述第三哈希值与所述第二哈希值一致,则所述待验证的二维码为所述私链账户发布的二维码。通过解析待验证二维码中的id与哈希值,利用该哈希值进行哈希运算生成第三哈希值,将第三哈希值与保存在区块链中的第二哈希值进行比对,二者相同证明该待验证的二维码是私链账户发布的二维码,未被篡改。去中心化的安全验证可以有效减轻传统的中心化的验证服务器的压力,且大大提高了数据的安全性。本发明实施例除了提供的二维码的生成、验证方法外,还提供了二维码的生成、验证装置。参见图3,图3是本申请提供的一种二维码生成装置的示意图。在本实施例中,所述装置包括信息获取单元301、id生成单元302、二维码生成单元303与第二哈希值生成单元304,其中:信息获取单元301,用于获取所述区块链上的私链账户发布的信息;id生成单元302,用于将所述私链账户发布的信息与私链账户的名称通过哈希运算生成所述私链账户发布的信息对应的身份识别号码id;二维码生成单元303,用于将所述id与所述私链账户发布的信息通过哈希运算生成第一哈希值与二维码,并将所述二维码存储在所述区块链中;第二哈希值生成单元304,用于将所述id与所述第一哈希值通过哈希运算生成第二哈希值,并将所述第二哈希值存储在所述区块链中,以便验证待验证的二维码。在一种可实施的方式中,二维码生成装置还包括主线程单元与子线程单元,其中:主线程单元,用于主线程获取所述私链账户发布的二维码,并发送给子线程;子线程单元,用于所述子线程将所述二维码解析为二维码矩阵;其中,所述二维码矩阵包括所述私链账户发布的信息。采用本申请实施例提供二维码生成装置,通过哈希运算生成长度固定的id,将私链账户的名称和私链账户发布的信息通过id的形式结合在一起,不仅将私链账户发布的信息以id的形式从明文的形式变为暗文的形式,还将私链账户的名称与私链账户发布的信息对应起来。固定长度的id与二维码信息内容绑定且不会随着二维码内容信息的大小而发生长度变化,有效的提高了数据的鲁棒性和安全性,大大提高了二维码编码信息空间;再将id通过两次哈希运算保存在区块链中,由于哈希运算具有单向性,一旦二维码内容被篡改,再次通过哈希运算得到的哈希值就会随之改变由此后续实现二维码信息摘要的私有链的链上校验,有效提升银行的数据安全性和客户的资金安全。参见图4,图4是本申请提供的一种二维码验证装置的示意图。在本实施例中,该装置用于对上述二维码生成装置生成的二维码进行验证,所述装置包括二维码获取单元401、解析单元402、第三哈希值生成单元403与验证单元404,其中:二维码获取单元401,用于在所述区块链中获取待验证的二维码;解析单元402,用于解析所述待验证的二维码中的id与所述待验证的二维码中的哈希值;第三哈希值生成单元403,用于将所述待验证的二维码中的id与所述待验证的二维码中的哈希值通过哈希运算生成第三哈希值;验证单元404,用于若所述第三哈希值与所述第二哈希值一致,则所述待验证的二维码为所述私链账户发布的二维码。在一种可能的实施方式中,所述装置还包括信息获取单元,用于当所述第二哈希值与所述第三哈希值一致时,根据所述待验证的二维码的id在所述区块链中获取所述私链账户发布的信息。在一种可能的实施方式中,验证单元404还用于当所述第二哈希值与所述第三哈希值不一致时,提示所述待验证二维码不安全。采用本申请实施例提供的二维码验证装置,通过解析待验证二维码中的id与哈希值,利用该哈希值进行哈希运算生成第三哈希值,将第三哈希值与保存在区块链中的第二哈希值进行比对,二者相同证明该待验证的二维码是私链账户发布的二维码,未被篡改。去中心化的安全验证可以有效减轻传统的中心化的验证服务器的压力,且大大提高了数据的安全性。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本发明的具体实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1