一种基于区块链和动态码的健康认证方法、设备及介质与流程

文档序号:22930488发布日期:2020-11-13 16:29阅读:162来源:国知局
一种基于区块链和动态码的健康认证方法、设备及介质与流程

本申请涉及健康认证领域,具体涉及一种基于区块链和动态码的健康认证方法、设备及介质。



背景技术:

但是现有技术中,健康码的生成使用过程中仍存在以下问题:当健康码被盗用或出现异常时,可能会对用户的利益造成损失,而用户则难以进行追溯。



技术实现要素:

为了解决上述问题,本申请提出了一种基于基于区块链和动态码的健康认证方法,包括:确定预先创建的区块链平台,其中,所述区块链平台中包括用户节点;接收所述用户节点发送的健康认证请求,其中,所述健康认证请求携带有所述用户节点的身份信息;根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码,和/或,确定所述健康认证请求对应的应用id;根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,并将所述动态码作为所述用户节点的健康码写入所述区块链平台中,以便于所述用户节点进行健康认证。

在一个示例中,所述身份信息包括用户姓名、身份证号;根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串,包括:将所述用户姓名、第一分隔符、所述身份证号按照相应的顺序拼接后,通过预设的编码方式,得到所述身份信息对应的身份编码;根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份编码,生成所述健康认证请求对应的唯一字符串。

在一个示例中,根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份编码,生成所述健康认证请求对应的唯一字符串,包括:将所述业务编码、所述应用id、当前的时间戳、所述身份编码、第二分隔符按照相应的顺序拼接后生成所述健康认证请求对应的唯一字符串;将所述唯一字符串进行加密,得到唯一加密字符串;根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,包括:根据所述唯一加密字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码。

在一个示例中,将所述唯一字符串进行加密,得到唯一加密字符串,包括:根据所述应用id确定对应的对称加密密钥;通过aes对称加密算法,以及所述加密密钥,将所述唯一字符串进行加密,得到唯一加密字符串。

在一个示例中,所述认证类型包括:复工、复学、出入特定场所、乘坐公共交通工具。

在一个示例中,所述方法还包括:将所述动态码的生成过程写入所述区块链平台中,其中,所述生成过程包括所述健康认证请求、所述身份信息、所述认证类型、所述预设的对应关系、所述业务编码、所述应用id、所述时间戳中、所述唯一字符串、所述码特征前缀。

在一个示例中,所述方法还包括:生成相应的智能合约,并部署在所述区块链平台中,其中,所述智能合约包括:确定业务编码智能合约、确定应用id智能合约、生成唯一字符串智能合约、生成动态码智能合约、写链智能合约。

在一个示例中,所述确定业务编码智能合约用于:根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码;所述确定应用id智能合约用于:确定所述健康认证请求对应的应用id;所述生成唯一字符串智能合约用于:根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;所述生成动态码智能合约用于:根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码;所述写链智能合约用于:将所述动态码作为所述用户节点的健康码写入所述区块链平台中。

另一方面,本申请还提出了一种基于区块链和动态码的健康认证设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:确定预先创建的区块链平台,其中,所述区块链平台中包括用户节点;接收所述用户节点发送的健康认证请求,其中,所述健康认证请求携带有所述用户节点的身份信息;根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码,和/或,确定所述健康认证请求对应的应用id;根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,并将所述动态码作为所述用户节点的健康码写入所述区块链平台中,以便于所述用户节点进行健康认证。

另一方面,本申请还提出了一种基于区块链和动态码的健康认证的非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定预先创建的区块链平台,其中,所述区块链平台中包括用户节点;接收所述用户节点发送的健康认证请求,其中,所述健康认证请求携带有所述用户节点的身份信息;根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码,和/或,确定所述健康认证请求对应的应用id;根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,并将所述动态码作为所述用户节点的健康码写入所述区块链平台中,以便于所述用户节点进行健康认证。

通过本申请提出健康认证方法能够带来如下有益效果:

由于区块链平台是分布式存储,单个节点的数据篡改不会生效,保证了区块链平台上数据的真实可信。因此在健康认证的过程中,通过设置动态码,并将动态码写入区块链平台中,可以在发生异常情况时,区块链平台中的各节点可以随时对动态码进行追溯,保障了用户的利益。并且在编码过程中添加有用户的身份信息,可以使得动态码与用户之间的关系更为密切,也就更加利于用户节点的追溯。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例中基于区块链和动态码的健康认证方法的流程示意图;

图2为本申请实施例中基于区块链和动态码的健康认证设备的示意图;

图3为本申请实施例中基于区块链和动态码的健康认证方法的示例图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

如图1所示,本申请实施例提供基于区块链和动态码的健康认证方法,其中,动态编码是一个用以生成字符串形式编码的内置规则,可以支持有时效性的编码,方法包括:

s101、确定预先创建的区块链平台,其中,所述区块链平台中包括用户节点。

区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质上是一个去中心化的数据库。

首先可以确定基于区块链框架创建的区块链平台。其中,区块链框架可以是能够实现本申请实施例相应功能的任意区块链框架,例如,比特币、以太坊、fabric、corda等。区块链平台可以指的是存储区块链的平台,例如,可以是分布式系统等。当然,区块链平台也可以直接代表区块链本身,在此不做限定。

在区块链平台中,可以将需要进行健康认证的用户作为节点部署在区块链平台中,在此可以将其称作用户节点。

s102、接收所述用户节点发送的健康认证请求,其中,所述健康认证请求携带有所述用户节点的身份信息。

s103、根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码,和/或,确定所述健康认证请求对应的应用id。

在实际的生活中,用户节点可能会由于各种原因需要进行健康认证。此时,用户节点可以发送相应的健康认证请求至区块链平台中。其中,健康认证请求中包括有用户节点的身份信息、健康认证请求的认证类型等信息。认证类型指的是,用户节点是基于什么原因来进行健康认证请求的,具体可以包括:复工、复学、出入特定场所、乘坐公共交通工具等。

在接收到了健康认证请求后,可以根据确定的认证类型,以及预设的对应关系确定健康认证请求对应的业务编码,和/或,根据健康认证请求确定对应的应用id。

具体地,业务编码的主要作用是对用户节点的申请的目的进行分类,可以是指定业务场景的唯一标识,其可以决定编码的时效时间、解析方式等基本属性,一般由系统内置。预设的业务编码的对应关系可以是由动态码的生成方进行设置,也可以有多个生成方或开发者进行约定规则后设置。业务编码可通常由大写字母、“_”、“-”和数字组成,例如图3所示的ywbm。

在确定应用id时,可以首先确定用户节点发送健康认证请求,以及使用该健康认证时所对应的应用。应用可以是在智能手机、平板电脑等终端上的app,也可以是电脑端上针对各种操作系统的应用,还可以是小程序应用。通常情况下,每个应用都会有其对应的应用id,也可以称作appid。应用id可以在设备上与应用商店中对应的应用进行唯一标识。例如图3中所示的appak。

s104、根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串。

在确定了业务编码、应用id后,可以根据业务编码、应用id、当前的时间戳中的至少一种,以及用户节点对应的身份信息来生成健康认证请求对应的唯一字符串。其中,时间戳可以是编码生成时刻的utc时间,最高可以精确到毫秒,有“yyyymmddhhmmsssss”、“yyyymmddhhmmss”、“yyyymmddhhmm”、“yyyymmddhh”、“yyyymmdd”、“yymmdd”、“yyyymm”、“yymm”等多种格式,在此不对具体格式做限定,具体可以例如图3所示的1582179788。

具体地,身份信息可以包括用户节点对应的用户姓名、身份证号等。而在根据身份信息生成唯一字符串时,可以首先将用户姓名、身份证号按照相应的顺序进行拼接得到的进行拼接后,通过预设的编码方式进行编码,来得到身份编码,然后基于身份编码生成唯一字符串。其中,相应的顺序可以是用户姓名、身份证号的顺序。而在进行拼接时,可以再用户姓名与身份证号之间添加相应的分隔符,在此可以称作第一分隔符。第一分隔符可以例如图3中的“|”,当然也可以不添加第一分隔符。而预设的编码方式可以是例如base64等编码方式,在此不再赘述。具体举例可以如图3所示,用户姓名为“张某某”,第一分隔符为“|”,身份证号为370101196001012345,通过basee64编码方式得到的身份编码为5byg5p+q5p+qfdm3mdewmte2f3。

在得到了身份编码后,可以根据业务编码、应用id、时间戳中的至少一种,以及身份编码来生成唯一字符串。在生成唯一字符串时,可以通过拼接的方式直接得到,或者通过分隔符将各信息进行分隔后拼接得到,还可以对得到的唯一字符串进行对称加密后,将得到的唯一加密字符串作为唯一字符串来生成动态码。

具体地,可以如图3所示,将业务编码、应用id、身份编码、时间戳按照相应的顺序进行排列,并通过第二分隔符(即图3中所示的“.”)进行分隔后,得到唯一字符串。然后通过aes对称加密算法以及相应的加密密钥,将唯一字符串进行加密,得到唯一加密字符串。其中,这里的加密密钥可以是通过应用id确定的,即预先对不同的应用id分配相对应的加密密钥,此刻即可根据预先分配的该对应关系来确定当前时刻使用的加密密钥。在对唯一字符串加密后得到的唯一加密字符串可以如图3所示的vetftaeojawvvivtztupbtfnosx…。其中,由于唯一加密字符串长度较长,为便于附图展示,故而在图3中只列出了唯一加密字符串的部分字符,并未全部列出。

s105、根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,并将所述动态码作为所述用户节点的健康码写入所述区块链平台中,以便于所述用户节点进行健康认证。

在得到了唯一字符串后,即可在唯一字符串之前添加码特征前缀,来生成动态码。当然,若是得到了唯一加密字符串,即可在唯一加密字符串之前添加码特征前缀来生成动态码,在此不再赘述。其中,码特征前缀是一串特定的url,以http开头,以“/”结尾,遵守url书写规则,与应用id绑定。通常情况下,这里生成的动态码可以表现为二维码,而常见的二维码可以是qr二维码,即qrcode,qr全称quickresponse。在生成了动态码后,即可将动态码作为健康码,并将动态码写入区块链平台中进行存储,以便于用户节点获取后进行健康认证。当然,在将动态码写入区块链平台之前,可以先通过用户节点的公钥对动态码进行加密,然后写入区块链平台中。用户节点可以使用自身的私钥进行解密后,获取该动态码。

在一个实施例中,还可以将动态码的生成过程写入区块链平台中,以便于用户节点对动态码进行查验。生成过程表示从准备生成,直至生成动态码的这一个过程。在这个过程中所用到的对应关系、算法、相关的数据都可以作为生成过程写入区块链平台中,具体可以包括健康认证请求、身份信息、认证类型、预设的对应关系、业务编码、应用id、时间戳中、唯一字符串、码特征前缀。用户节点在进行查验时,可以首先从动态码对应的参数中截取唯一字符串部分,当然,若是这里得到的唯一加密字符串,则可以通过应用id对应的加密密钥进行解密,得到唯一字符串。然后通过第二分隔符对对唯一字符串进行拆分,获得各部分内容,并对各部分内容进行对比,以确定是否正确。在确定身份信息时,若身份信息是通过预设的编码方式得到的身份编码,则可以根据得到的身份编码进行反编译,来得到身份信息进行查验。

在一个实施例中,还可以预先生成相应的智能合约,并部署在区块链平台中。智能合约可以包括确定业务编码智能合约、确定应用id智能合约、生成唯一字符串智能合约、生成动态码智能合约、写链智能合约。而确定业务编码智能合约用于:根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码;确定应用id智能合约用于:确定所述健康认证请求对应的应用id;生成唯一字符串智能合约用于:根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;生成动态码智能合约用于:根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码;写链智能合约用于:将所述动态码作为所述用户节点的健康码写入所述区块链平台中。

由于在区块链平台上的智能合约是公开的,每个节点都可以审验该智能合约是否符合预先的约定,并将其部署在自己的节点上。因此在提高了自动化程度的同时,也增加了各节点的信任程度。而智能合约只能通过升级的方式进行更改,需要各个节点同步部署,并且一旦部署,便只能通过程序执行,没有人为因素的干扰,加强了数据的可信度。

如图2所示,本申请实施例还提供了一种基于区块链和动态码的健康认证设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

确定预先创建的区块链平台,其中,所述区块链平台中包括用户节点;

接收所述用户节点发送的健康认证请求,其中,所述健康认证请求携带有所述用户节点的身份信息;

根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码,和/或,确定所述健康认证请求对应的应用id;

根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;

根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,并将所述动态码作为所述用户节点的健康码写入所述区块链平台中,以便于所述用户节点进行健康认证。

本申请实施例还提供了一种基于区块链和动态码的健康认证的非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:

确定预先创建的区块链平台,其中,所述区块链平台中包括用户节点;

接收所述用户节点发送的健康认证请求,其中,所述健康认证请求携带有所述用户节点的身份信息;

根据所述健康认证请求对应的认证类型,以及预设的对应关系,确定所述健康认证请求对应的业务编码,和/或,确定所述健康认证请求对应的应用id;

根据所述业务编码、所述应用id、当前的时间戳中的至少一种,以及所述身份信息,生成所述健康认证请求对应的唯一字符串;

根据所述唯一字符串,以及相应的码特征前缀,生成所述健康认证请求对应的动态码,并将所述动态码作为所述用户节点的健康码写入所述区块链平台中,以便于所述用户节点进行健康认证。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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