一种区块链发放质量码以及验证质量码的方法及装置与流程

文档序号:17893697发布日期:2019-06-13 15:50阅读:375来源:国知局
一种区块链发放质量码以及验证质量码的方法及装置与流程

本申请涉及信息技术领域,尤其涉及一种利用区块链发放质量码以及验证质量码的方法及装置。



背景技术:

目前,随着社会经济的发展假冒伪劣产品层出不穷,已成为阻碍经济和社会发展的一个十分突出的问题。

在现有技术中,存在多种辨别假冒伪劣产品的方法。一种常见的方法是在正规产品上提供防伪标识,使得消费者可以通过防伪标识分辨假冒伪劣产品。传统的防伪标识,主要通过提高防伪标识的制造难度,来避免假冒伪劣产品防治。而随着互联网技术的普及,厂家开始通过在产品上提供防数字对象唯一标识符(digitalobjectuniqueidentifier,doi)防伪标识,通常使用的doi为二维码,使得消费者可通过扫描二维码防伪标识,获取相应的产品信息,用来分辨假冒伪劣产品。也就是,通过向消费者提供分辨假冒伪劣产品的产品信息,从而达到防伪的目的。

但是,基于获取的产品信息分辨假冒伪劣产品的方法,产品信息通常存储在服务器或者数据库中,使得一旦存储产品信息的一方收到攻击,产品信息容易遭到篡改,导致消费者获取的产品信息并不不是真实的产品信息。也就使得现有通过二维码防伪标识进行验证的方法存在缺陷。因此,本申请提供一种新的利用区块链发放质量码以及验证质量码的方法及装置。



技术实现要素:

本说明书实施例提供一种利用区块链发放质量码以及验证质量码的方法以及装置,用于解决现有技术中利用获取的产品信息分辨假冒伪劣产品的方法,由于产品信息的获取渠道以及获取过程容易受到攻击,使得通过二维码防伪标识进行验证的方法存在缺陷的问题。

本说明书实施例采用下述技术方案:

一种利用区块链发放质量码的方法,包括:

向服务器发送质量码的获取请求;

接收所述服务器根据所述获取请求返回的质量码,以及所述服务器根据所述质量码生成的二维码,其中,所述质量码根据顺序码以及所述服务器的私钥,通过预设的散列函数计算得到,不同的质量码对应不同的顺序码;

将所述质量码签名后存储在区块链中,以及将所述二维码用于产品防伪识别。

一种利用区块链发放质量码的方法,包括:

服务器接收第一用户的获取请求;

根据所述获取请求确定顺序码,通过预设的散列函数、所述顺序码以及所述服务器的私钥,计算得到质量码;

根据所述质量码生成二维码;

将所述质量码以及所述二维码返回所述第一用户,使所述第一用户在将所述质量码签名后存储在区块链中,将所述二维码用于产品防伪识别。

一种利用区块链验证质量码的方法,包括:

接收第二用户发送的验证请求,其中,所述验证请求中携带有所述第二用户通过扫描二维码获取的验证码;

根据区块链中已经存储的各签名后的质量码,判断是否存在与所述验证码匹配的质量码;

若是,则对与所述验证码匹配的质量码的签名进行验签,并根据验签结果向所述第二用户返回验证结果;

若否,则向所述第二用户返回证伪的验证结果。

一种利用区块链发放质量码以及验证质量码的方法,所述方法包括:第一用户、第二用户以及服务器,其中:

服务器接收第一用户的获取请求;

根据所述获取请求确定顺序码,通过预设的散列函数、所述顺序码以及所述服务器的私钥,计算得到质量码;

根据所述质量码生成二维码;

将所述质量码以及所述二维码返回所述第一用户,使所述第一用户在将所述质量码签名后存储在区块链中,将所述二维码用于产品防伪识别;

接收第二用户发送的验证请求,其中,所述验证请求中携带有所述第二用户通过扫描二维码获取的验证码;

根据区块链中已经存储的各签名后的质量码,判断是否存在与所述验证码匹配的质量码;

若是,则对与所述验证码匹配的质量码的签名进行验签,并根据验签结果向所述第二用户返回验证结果;

若否,则向所述第二用户返回证伪的验证结果。

一种利用区块链发放质量码的装置,包括:

发送模块,向服务器发送质量码的获取请求;

接收模块,接收所述服务器根据所述获取请求返回的质量码,以及所述服务器根据所述质量码生成的二维码,其中,所述质量码根据顺序码以及所述服务器的私钥,通过预设的散列函数计算得到,不同的质量码对应不同的顺序码;

存证模块,将所述质量码签名后存储在区块链中,以及将所述二维码用于产品防伪识别。

一种利用区块链发放质量码的装置,包括:

接收模块,接收第一用户的获取请求;

计算模块,根据所述获取请求确定顺序码,通过预设的散列函数、所述顺序码以及所述服务器的私钥,计算得到质量码;

生成模块,根据所述质量码生成二维码;

发送模块,将所述质量码以及所述二维码返回所述第一用户,使所述第一用户在将所述质量码签名后存储在区块链中,将所述二维码用于产品防伪识别。

一种利用区块链验证质量码的装置,包括:

接收模块,接收第二用户发送的验证请求,其中,所述验证请求中携带有所述第二用户通过扫描二维码获取的验证码;

判断及验证模块,根据区块链中已经存储的各签名后的质量码,判断是否存在与所述验证码匹配的质量码,若是,则对与所述验证码匹配的质量码的签名进行验签,并根据验签结果向所述第二用户返回验证结果,若否,则向所述第二用户返回证伪的验证结果。

本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:质量码通过散列计算确定,保证了质量码的唯一性,而采用顺序码和服务器的私钥作为计算的输入,保证了质量码的安全性(即,第三方难以破解),而由使用质量码防伪的一方(如,产品生产厂商)将质量码签名存储在区块链中,利用区块链的不可篡改性,以及自身的签名保证质量码的有效性。而在使用质量码对应的doi用于产品的防伪时,用户(如,消费者)可以通过区块链中存储的质量码验证doi中包含的信息是否真实有效。由于区块链中存储的质量码,从生成到存储,分别利用了服务器的私钥以及使用质量码防伪的一方的私钥(即,所述私钥用于签名质量码),使得区块链中存储的质量码更加安全可靠,并且,通过区块链的不可篡改的特性可以保证质量码的内容准确。避免了现有技术中利用二维码提供产品信息导致的缺陷,提高了利用二维码进行防伪的准确性。

附图说明

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

图1为本说明书实施例提供的一种利用区块链发放质量码以及验证质量码的流程示意图;

图2为本申请实施例提供的一种利用区块链发放质量码的方法流程示意图;

图3为本申请实施例提供的将质量码存证以及将二维码用于产品防伪识别的示意图;

图4为本申请实施例提供的另一种利用区块链发放质量码的方法流程示意图;

图5为本申请实施例提供的一种利用区块链验证质量码的方法流程示意图;

图6为本申请实施例提供的一种利用区块链发放质量码的装置的结构示意图;

图7为本申请实施例提供的一种利用区块链发放质量码的装置的结构示意图;

图8为本申请实施例提供的一种利用区块链验证质量码的装置的结构示意图。

具体实施方式

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

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

图1为本申请实施例提供的一种利用区块链发放质量码以及验证质量码的过程示意图,在所述方法中包括第一用户、第二用户以及服务器,该第一用户为使用质量码用于防伪的用户,即将质量码存证的用户,该第二用户为获取质量码后,根据质量码进行防伪验证的用户,即根据质量码验证产品真伪的用户,该服务器为提供存证以及验证服务的服务提供方的服务器,该方法具体可包括以下步骤:

s100:服务器接收第一用户的获取请求。

在本申请实施例中,以第一用户为使用质量码用于防伪的用户(如,商家用户、生产企业、销售平台等等),为了在向第二用户(如,消费者、零销商等)提供产品时能提供更好的防伪doi,第一用户可根据需要向服务器发送获取请求,以获取用于防伪的doi以及对应的该doi的质量码。

需要说明的是,本申请中并不限定doi的类型,该doi可包括:二维码、条形码、三维码等各类doi中的任意一种。当然,为了方便说明,本申请说明书后续以doi为二维码为例进行说明。

于是,在本申请实施例中,该服务器可接收第一用户发送的获取请求。其中,该获取请求中可携带有该第一用户需获取的质量码的数量。

具体的,第一用户可通过终端(如,手机、个人电脑、平板电脑等)向服务器发送该获取请求,该服务器具体可以是单独的一台设备,或者由多台设备组成的系统(如,分布式服务器)本申请对此不做限定。

s102:根据所述获取请求确定顺序码,通过预设的散列函数、所述顺序码以及所述服务器的私钥,计算得到质量码。

在本申请实施例中,该服务器在接收到获取请求后,为了方便描述,以该获取请求为获取一个质量码为例进行后续步骤的说明。

首先,该服务器可先根据获取请求确定顺序码。该顺序码为服务器用于生成质量码时,记录该质量码顺序号的号码。也就是该质量码对应的流水号,例如,假设服务器生成的第一个质量码对应的顺序码为00001,则第二个质量码对应的顺序码为00002,依次类推,当服务器生成第1万个质量码时,该质量码对应的顺序码为10000。

可见,在本申请实施例中,该顺序码主要用于唯一标识该质量码,并且记录各质量码生成的先后顺序。

其次,服务器可根据预设的散列函数,确定出的顺序码以及该服务器的私钥,计算得到质量码。具体的,服务器可将顺序码以及服务器的私钥组合后,进行散列计算,将计算结果作为质量码。例如,假设该散列函数为消息摘要算法第五版(message-digestalgorithm5,md5),则计算结果为128位的字符串,该字符串即为服务器确定出的质量码。

或者,在本申请一个或多个实施例中,服务器也可将计算结果与确定出的顺序码的组合,作为质量码,便于从质量码的明文确定各质量码的生成的先后顺序。

s103:根据所述质量码生成数字对象唯一标识符doi。

在本申请实施例中,当服务器确定质量码后,由于质量码本身并没有验证产品真伪的特性,因此为了方便将质量码与产品建立联系,服务器可根据预设的二维码编译规则,生成该质量码对应的二维码。

当然,由于现有技术中,将数据生成二维码已经是较为成熟的技术,并且也存在多种的编译方式,因此具体采用何种方式生成该质量码对应的二维码,本申请不做限定,可根据需要进行设置。

s104:将所述质量码以及所述doi返回所述第一用户,使所述第一用户在将所述质量码签名后存储在区块链中,将所述doi用于产品防伪识别。

在本申请实施例中,服务器在确定出质量码以及质量码对应的二维码之后,便可将质量码和二维码返回至第一用户,则第一用户在接收到质量码和二维码之后,可利用区块链将质量码存证之后,将该二维码用于产品防伪识别,完成质量码的发放过程。在本申请中,质量码的发放包含:将质量码存证以及将质量码用于防伪识别,两部分内容。

具体的,第一用户在接收到质量码以及二维码之后,可采用自己的私钥对质量码进行签名后,将质量码明文以及签名存储至区块链中,而区块链的各节点可在共识通过后,确定存储该质量码明文以及签名。其中,该签名可以用于证明该质量码时由该第一用户存储的,并将该质量码用于防伪验证。

需要说明的是,在本申请实施例中,对于区块链具体是何种类型的区块链(如,公有链、联盟链、私有链)不做限定,并且对于该区块链采用的共识算法也不做限定。

另外,由于服务器提供了该质量码对应的二维码,因此第一用户还可将该二维码用于产品的防伪识别。具体可采用在产品外包装印刷二维码、外包装粘贴二维码、产品开封处粘贴二维码等等方式设置该二维码。

当然,由于现有技术中已经有多种设置用于防伪识别的二维码的方法,因此本申请对于该二维码具体的设置方式不做限定,可根据需要设置,只要第二用户可通过该二维码执行后续验证过程即可。

s105:接收第二用户发送的验证请求,其中,所述验证请求中携带有所述第二用户通过扫描doi获取的验证码。

在本申请实施例上述步骤s100至s104为服务器向第一用户提供质量码以及二维码,并由第一用户根据需要将质量码存证以及用于防伪的过程,下述步骤s105至s110,为第二用户通过第一用户提供的二维码进行验证的过程。

具体的,如在步骤s100中所述的第二用户为根据质量码进行验证的用户,该第二用户可通过扫描产品上设置的二维码,获取该二维码中包含的验证码,并将该验证码携带在验证请求中发送至服务器。于是,服务器在接收到该验证请求后,可根据验证请求执行后续步骤,对该验证码进行验证。

其中,需要说明的是,该验证码即为第二用户从二维码中获取的待验证的质量码,为了方便区在本申请实施例中,将第二用户从二维码中获取的待验证的质量码统称为验证码。

s106:根据区块链中已经存储的各签名后的质量码,判断是否存在与所述验证码匹配的质量码,若是则执行步骤s108,否则执行步骤s110。

在本申请实施例中,当服务器确定验证码之后,由于若该验证码是第一用户用于产品防伪的质量码,则该质量码应已经被第一用户作为存证数据存储在区块链中,因此服务器可根据区块链中已经存储的各签名后的质量码,判断是否存在与该验证码匹配的质量码。即首先判断该验证码是否是一个第一用户用于防伪的质量码。

具体的,由于在存证时第一用户将签名后的质量码、质量码明文及其对应关系,一并存储至区块链中,因此服务器可针对每个质量码的明文,判断该验证码是否与该质量码的明文一致。若该验证码与任一质量码的明文一致,则可确定该质量码与该验证码匹配,执行步骤s108,而若没有任何质量码的明文与该验证码一致,则可确定该验证码是伪造的,可执行步骤s110。

s108:对与所述验证码匹配的质量码的签名进行验签,并根据验签结果向所述第二用户返回验证结果。

在本申请实施例中,由于区块链中各区块内的数据,通常只要共识通过便可存储至各节点维护的区块链中,英雌当服务器确定存在与验证码匹配的质量码之后,还需要验证该匹配的质量码是否是合法的质量码,并将确定出的验证结果返回该第二用户。

于是,服务器可进一步对该质量码的签名进行验签。首先,可根据该质量码,确定接收该质量码的第一用户的用户标识。之后,根据确定出的用户标识,确定该第一用户的公钥。最后,根据该公钥对该质量码的签名进行验签,具体验签的过程可与现有技术相同。即,判断签名是否可用该公钥解析,以及解析后的内容是否与质量码的明文一致。本申请对验签过程不再赘述。

若验签通过则确定该验证码的验证结果为真实,若验签不通过则确定该验证码的验证结果为证伪。

s110:则向所述第二用户返回证伪的验证结果。

在本申请实施例中,如在步骤s106中所述的,当服务器确定没有任何质量码与该验证码匹配时,则可确定该验证码为伪造的,服务器可向第二用户返回证伪的验证结果。

通过图1所示的存证以及验证的过程。可见,使用二维码用于防伪的第一用户,所使用的质量码为服务器根据自身的私钥以及全局唯一的顺序码生成的。使用私钥使得质量码难以被第三方仿制,使用顺序码保证了质量码的唯一性。而存证过程是由第一用户执行的,并且可使用第一用户的私钥进行签名后,再存储在区块链中。使得区块链中存储的质量码的身份可以被验证。一方面从生成可以确定质量码的来源(只有服务器的私钥才可生成合法的质量码),一方面从存储可确定存储质量码一方的身份,再利用区块链存储数据的不可篡改性,使得质量码的存储更加安全,且可验证质量码的真伪。使得后续对质量码的验证过程服务器可以为第二用户提供更加准确的验证结果。避免了现有技术中质量码生成以及存储过程中的缺陷,带来的质量码容易被篡改的问题。

其中,步骤s100至步骤s104的存证过程可以与步骤s106至步骤s110的验证过程相互独立。也就是说,服务器即可接收第一用户发送的获取请求返回质量码和二维码使第一用户用于存证,同时也可接收第二用户发送的验证请求,对根据区块链中已经存储的质量码,进行验证。当然,针对每个质量码,该质量码需要先经过步骤s100至步骤s104,存储至区块链中之后,再经过步骤s106至步骤s110,才可被验证真实,否则只会被证伪。也就是存证和验证之间的时间顺序本申请并不做限定,对于没有存证的质量码进行验证其验证结果必然为证伪。

下面对上述存证过程以及验证过程继续详细的过程说明。

其中,基于图1所示的利用区块链发放质量码以及验证质量码过程,本申请实施例对应提供一种发放质量码过程,如图2所示。具体包括以下步骤:

s200:向服务器发送质量码的获取请求。

在本申请实施例中,以第一用户为例说明该第一用户将质量码作为存证的数据存储至区块链的过程。其中,第一用户可根据自身的需要向服务器发送获取质量码的获取请求,该服务器为提供质量码的服务提供方的服务器。

并且,由于通常使用二维码进行防伪识别的用户,通常是生产量较大的企事业单位,因此该获取请求中可携带有该第一用户需要获取的质量码的数量。例如,某工厂需要生产1个批次10万瓶白酒,则每瓶白酒都需要一个对应的质量码,用于防伪,则该工厂可向服务器发送获取10万个质量码的获取请求。

具体的,由于第一用户向服务器发送获取请求以获取质量码的过程,可视为是一种线上执行业务的过程。因为为了业务执行的安全,该第一用户在通过终端向服务器发送获取请求之前,可先登录在该服务器中已经注册的账户,并通过将账户标识携带在获取请求中,使服务器通过该账户的登录信息,确定该第一用户的身份以及获取请求合法之后,再执行后续步骤。

其中,具体的该第一用户可以通过网页客户端或者服务提供方提供的应用程序,注册登录账户。当然,由于现有技术中类似服务提供方与用户之间通过账户的方式,在执行业务之前进行身份以及权限验证已经较为成熟,存在多种方式,因此本申请对此不再赘述。

s202:接收所述服务器根据所述获取请求返回的质量码,以及所述服务器根据所述质量码生成的数字对象唯一标识符doi,其中,所述质量码根据顺序码以及所述服务器的私钥,通过预设的散列函数计算得到,不同的质量码对应不同的顺序码。

在本申请实施例中,该第一用户可接收服务器根据该获取请求返回的质量码,以及该服务器根据质量码生成的doi(后续以二维码为例进行说明)。其中,该质量码为服务器根据顺序码以及该服务器的私钥,通过预设的散列函数计算得到的,并且,不同的质量码对应不同的顺序码。

具体的,当该获取请求为获取复数的质量码时,该第一用户可接收到服务器返回的对应数量的质量码以及对应每个质量码的二维码,并且可在后续将各质量码分别用于不同产品的防伪。

另外,在本申请实一个或多个施例中,以一个质量码为例进行说明。该质量码具体为16位的字符串,其中,前10位为该服务器确定的与该质量码对应的顺序码,其余6位字符为散列函数计算得到的计算结果中包含的字符。

例如,假设服务器根据获取请求,确定顺序码为1234567890,通过散列函数计算的计算结果为5bf6be7122b0a90a40f2ee309e0d88dc,服务器确定的质量码可以是由顺序码的10位和计算结果中的最后6位组成的,即,12345678900d88dc。

进一步地,在本申请一个或多个实施例中,为了增加该质量码对应的二维码的使用安全性,还可将该质量码拆分为用于编译成二维码的部分,以及用于作为验证码的部分。于是,该服务器提供的二维码中包含有该质量码中的12位,其余4位字符作为该二维码的校验码。

其中,二维码中由于包含了顺序码,而顺序码的数值是按照服务器提供服务的时间增加而增大的,因此可以方便后续验证过程中查找。例如,2019年1月的使用的顺序码最大值为1000000000,2月使用的顺序码的最大值为1000030000,则当后续验证过程中查找匹配的质量码时,若接收到验证码的前10位为1000015000,则服务器可在区块链中2月之后生成的区块中查找匹配的质量码,减少匹配的工作量。

而质量码中其余4位作为校验码的字符串,可以设置在可刮开涂层下。利用可刮开涂层的破坏后不可修复的特征,增加质量码在用于防伪时的安全性。使得第二用户在验证之前,可以确定产品的质量码没有被使用过。当然,利用可刮开涂层保护防伪码已经是现有技术中较为成熟的方法,本申请对此不再赘述。

需要说明的是,上述质量码的生成方法,仅为本申请提供的一种实施方试,该服务器也可直接将该散列函数计算得到的计算结果作为质量码,返回第一用户。或者,不对质量码进行拆分,而是全部编译生成包含质量码所有字符的二维码。而只要质量码的生成过程可以保证各质量码的唯一性,且只有根据该服务器的私钥才可生成,即可保证质量码在生成过程的安全性。

s204:将所述质量码签名后存储在区块链中,以及将所述doi用于产品防伪识别。

在本申请实施例中,第一用户可将接收到的质量码签名之后再存储至区块链中,并将接收到的二维码用于产品的防伪识别。如图3所示。

图3为本申请实施例提供的,第一用户将质量码存证以及将二维码用于产品防伪识别的示意图。

具体的,第一用户可通过自身的私钥,对该质量码进行签名,以证明存储该质量码的用户的身份。如图3中该第一用户,将质量码发送至区块链网络中,使各区块链网络中的各节点(即,图3中的圆形),将质量码存储在其自身维护的区块链中的一个区块上(即,图3中由若干方块组成的链,深色方块为包含有该质量码的区块)。其中,由于第一用户需要将数据存储至区块链中,因此该私钥可以是该第一用户在该区块链网络中的账户的私钥。例如,若该区块链为以太坊的区块链,则该私钥可以为第一用户的以太坊账户的私钥。

该二维码可以由第一用户将其印刷或者粘贴在需要防伪的产品上,使得第二用户(如,消费者、零售商等)可以通过产品上的二维码获取该产品对应的质量码,并进行验证。如图3中该第一用户将二维码粘贴于产品上,用于产品防伪。

另外,为了使该质量码可以用于验证产品信息是否与产品符合,在本申请实施例中,该第一用户在存储质量码时,针对每个质量码,可确定该质量码对应的产品的产品信息,并建立该质量码与该产品信息的对应关系,将该对应关系签名后存储至区块链中。其中,第一用户可根据产品与二维码的设置关系,确定各质量码与产品的对应关系。

例如,质量码a对应的二维码b粘贴在了产品c上,用于该产品c的防伪,则第一用户可确定质量码a与产品c存在对应关系,并将产品信息、质量码以及产品信息与质量码的对应关系签名后存储在所述区块链中。

需要说明的是,在本申请实施例中,第一用户可对每个用于存证的质量码及其对应的二维码分别执行步骤s204。使得第一用户使用的每个二维码对应的质量码均可在区块链中找到对应的内容,以进行产品真伪的验证。

在本申请实施例中,对应图2所示的利用区块链发放质量码以及验证质量码过程,本申请实施例对应提供一种服务器侧执行的发放质量码过程,如图4所示。具体包括一下步骤:

s300:服务器接收第一用户的获取请求。

在本申请实施例中,以服务器执行该发放质量码过程进行说明,该服务器可接收第一用户发送的获取请求,并根据该获取请求确定执行后续步骤。其中,获取请求的内容以及发送过程等,可参考上文中对步骤s200的描述。本申请再次不再赘述。

s302:根据所述获取请求确定顺序码,通过预设的散列函数、所述顺序码以及所述服务器的私钥,计算得到质量码。

在本申请实施例中,由于提供存证用的质量码的服务提供发,通常为复数提供服务,即该服务提供方可是以为是第三方,为各第一用户提供质量码。因此该服务器可接收不同的第一用户发送的获取请求。于是,在该服务提供方内部生成每个质量码时,为了区别生成的每个质量码,可以对每个质量码设置一个全局唯一的标识。在本申请实施例中,该全局唯一的标识即为每个质量码对应的顺序号。

具体的,在本申请实施例中,该顺序码用于表示生成质量码的先后顺序,按照大小依次用于生成质量码。例如,该服务器使用的质量码为数字0~9的字符组成的字符串,该字符串的内容为10进制的数值,或者由0~9和a~f组成的字符串,则该字符串的内容为16进制的数值。总之,该顺序码为用于表示数值的字符串,具体采用10进制、16进制还是32进制等等来表示数值,本申请不做限定。

首先,当该服务器在接收到获取请求后,可先确定历史上已经使用过的数值最大的顺序码。例如,在步骤s300之前,服务器使用的顺序码的最大数值为10,用于生成质量码,则当在步骤s300接收到获取请求之后,服务器可确定历史上已经使用过的数值最大的顺序码为10。

其次,在本申请实施例中,服务器可根据确定出的数值最大的顺序码,按照数值从小到大的顺序,确定大于该确定出的数值最大的顺序码的数值,作为该获取请求对应的顺序码。继续沿用上里,服务器可确定大于10的数值,如11,作为该获取请求对应的顺序码。或者服务器也可确定100,作为该获取请求对应的顺序码。只要确定的顺序码的数值大于已经使用过的顺序码中的最大数值即可。

当然,为了提高顺序码的利用率,服务器可以依次确定顺序码的数值。例如,当最大数值为100时,确定101为顺序码,后续再需要确定顺序码时,确定102位顺序码,以此类推。

之后,服务器可将确定出的顺序码的字符串与该服务器的私钥的字符串进行排列,确定组合字符串。其中,具体的排列组合方法本申请不做限定,例如可以顺序排列,或者隔一个字符插入一个字符的方式将两个字符串进行排列,本申请对此不做限定。

然后,服务器可通过预设的散列函数,对该组合字符串进行散列计算,确定计算结果。当然,如在图1步骤s102中所述的,该散列函数具体为那种函数,本申请不做限定。例如,可以是消息摘要第五版算法(message-digestalgorithm5,md5),hash1,hash256,等等。

最后,服务器可将该计算结果作为质量码,或者将该计算结果中的部分字符与该顺序码的组合,作为质量码。对于质量码的具体内容可参考上述图2中步骤s202中的描述,本申请在此不再赘述。

需要说明的是,若该获取请求为请求获取复数的质量码时,该服务器可根据该获取请求中携带的数值,确定对应数量的质量码。例如,当获取请求请求获取100个质量码时,假设已经使用过的顺序码的最大值为200,则服务器可确定201~301的顺序码为该获取请求对应的顺序码。而在根据顺序码生成质量码时,可针对每个顺序码,执行同样的计算过程,分别确定每个顺序码对应的质量码。

s304:根据所述质量码生成数字对象唯一标识符doi。

在本申请实施例中,由于确定出的质量码是存储至区块链中,用于存证的。而为了方便第二用户根据质量码进行产品真的验证,该服务器还可生成该质量码对应的doi。该doi具体可以是条形码、二维码或者三维码等,本申请对doi的具体类型不做限制。

需要说明的是,现有技术中存在多种编译规则,将数据编译生成doi,且各编译规则的使用已经较为成熟,因此本申请对于生成二维码的过程不再赘述。同时,也不限定服务器可采用的编译规则,具体的可根据需要设置。

进一步地,如在图2步骤s202中所述的,该服务器还可将质量码拆分为用于生成二维码的字符串,以及作为校验码的字符串,以增加本申请生成的质量码及其二维码用于产品时的防伪能力。详细内容可参考步骤s202中的描述。

s306:将所述质量码以及所述doi返回所述第一用户,使所述第一用户在将所述质量码签名后存储在区块链中,将所述doi用于产品防伪识别。

在本申请实施例中,服务器在生成质量码对应的doi之后,便可将该质量码及其对应的doi返回第一用户,使第一用户将质量码签名后存储在区块链中用于存证,以及将该doi用于产品的防伪识别。

基于图1所示的利用区块链发放质量码以及验证质量码过程,本申请实施例对应提供一种验证质量码过程,如图5所示。具体包括以下步骤:

s400:接收第二用户发送的验证请求。

在本申请实施例中,第二用户为通过扫描doi之后获取验证码,并进行验证的用户,则服务器可接收第二用户发送验证请求,其中,该验证请求中携带有该第二用户通过扫描doi获取的验证码。

具体的,第二用户可通过终端扫描产品上由第一用户设置的二维码,获取验证码,之后根据验证码向服务器发送验证请求。其中,该第二用户发送验证请求可以是通过网页客户端向服务器发送该验证请求,或者通过应用程序向服务器发送该验证请求,或者通过浏览器(或具有浏览器内核的应用程序)向服务器发送该验证请求。

本申请对于该验证请求具体如何发送不做限定,当然,由于该二维码中可仅包含验证码,因此该第二用户需要通过与该服务器事先约定好的方式扫描该二维码,才可向服务器发送该查询请求。例如,第二用户使用该服务提供方提供的应用程序,扫描二维码之后,该应用程序可确定需要向服务器发送验证请求,并将扫描二维码获取的验证码携带在验证请求中发送至服务器。

另外,在本申请一个或多个实施例中,该二维码中的验证码可以是包含在url中的,则第二用户在通过浏览器或者具有浏览器内核的应用程序,扫描该二维码后,可通过该url直接访问该服务器,并向该服务器发送携带有验证码的验证请求。

上述两种方法均可实现本申请步骤s400第二用户向服务器发送验证请求,具体常采用何种方法,可根据需要设置。

s402:根据区块链中已经存储的各签名后的质量码,判断是否存在与所述验证码匹配的质量码,若是执行步骤s404,否则执行步骤s406。

在本申请实施例中,服务器可根据区块链中已经存储的各签后的质量码,判断是否存在与该验证码匹配的质量码,若是,则说明存在可进行后续验证步骤,若否,则说明该验证码没有与之匹配的质量码,也就是没有任何第一用户将该验证码作为存证存储在区块链中,因此可执行步骤s406向第二用户发送证伪的验证结果。

具体的,该服务器可针对区块链中存储的每一个质量码,确定该质量码的明文,之后判断该质量码的明文与该验证码是否一致。若有任一质量码的明文与该验证码一致,则可执行步骤s404,否则执行步骤s406。

另外,由于在本申请一个或多个实施例中,该服务器在向第一用户提供用于置于产品上进行验证的二维码时,该二维码只包含质量码的部分字符串,则第二用户向服务器发送的验证码也仅为质量码中的部分。例如,二维码只包含质量码中的前12位字符,则服务器可判断每个质量码的前12个字符是否与验证码一致。

进一步地,由于上述情况下,验证码只包含了质量码的部分内容,因此验证码并不一定是全局唯一的,因此服务器还可能确定多个与验证码匹配的质量码。则为了确定是验证码唯一对应的质量码,该服务器还可向第二用户发送提示信息,以提示所述第二用户提供覆盖在可刮开涂层下的校验码。

之后,在接收到第二用户根据该提示信息返回的校验码之后,判断已经确定出匹配的质量码中,是否存在后4位与该校验码一致的质量码,若是,则执行步骤s404,否则执行步骤s406。

例如,假设某个质量码为0000000000123456,服务器利用前12位,即000000000012生成二维码,将后4位3456作为校验码。后续服务器接收到第二用户发送的验证请求后,验证码为000000000012,并根据该验证码确定出了3个匹配的质量码,分别为0000000000123456、0000000000123458、0000000000125512。则服务器可向第二用户发送提示信息“请刮开涂层,并输入校验码”。假设第二用户返回校验码3456,则服务器可确定执行步骤s404,且与该验证码以及校验码均匹配的质量码为0000000000123456。当然,假设服务器查询不到与000000000012匹配的质量码,或者匹配的各质量码的后4位,没有一个与该校验码一致,服务器都可执行步骤s406。

s404:对与所述验证码匹配的质量码的签名进行验签,并根据验签结果向所述第二用户返回验证结果。

在本申请实施例中,当确定存储匹配的质量码之后,服务器可对该质量码的签名进行验签,若验签通过,则向第二用户发送验证为真实的验证结果,若验签未通过,则向第二用户发送证伪的验证结果。

其中,服务器可根据该匹配的质量码,确定获取该质量码的第一用户的公钥,并通过该公钥对该质量码的签名进行验签。当然,验签过程已经是现有技术中较为成熟的方法,本申请对此不再赘述。

s406:向所述第二用户返回证伪的验证结果。

在本申请实施例中,若服务器未能确定出于验证码匹配的质量码,则说明该验证码为伪造的,则可向第二用户发送证伪的验证结果。

另外,由于第一用户在存储质量码时,还可将产品的产品信息一同存储至区块链中,因此在本申请实施例步骤s404中,若该服务器确定验证为真实的验证结果时,还可进一步确定该质量码对应的产品信息,并将该产品信息以及该验证结果一同发送给第二用户。

基于图2提供的发放质量码方法,本申请还对应提供两种利用区块链发放质量码的装置,如图6和图7所示。

图6为本申请实施例提供的利用区块链发放质量码的装置的结构示意图,包括:

发送模块500,向服务器发送质量码的获取请求;

接收模块502,接收所述服务器根据所述获取请求返回的质量码,以及所述服务器根据所述质量码生成的二维码,其中,所述质量码根据顺序码以及所述服务器的私钥,通过预设的散列函数计算得到,不同的质量码对应不同的顺序码;

存证模块504,将所述质量码签名后存储在区块链中,以及将所述二维码用于产品防伪识别。

存证模块504,根据自身的私钥对所述质量码进行签名,将所述质量码以及签名后的质量码存储在所述区块链中。

所述doi为二维码,所述质量码为16位字符串,所述二维码包含所述字符串中12位字符,其余字符作为校验码;存证模块504,将所述二维码以及覆盖有可刮开涂层的所述校验码置于产品上,用于防伪识别。

存证模块504,确定所述质量码对应的产品的产品信息,将所述产品信息以及所述质量码签名后存储在所述区块链中。

图7为本申请实施例提供的利用区块链发放质量码的装置的结构示意图,包括:

接收模块600,接收第一用户的获取请求;

计算模块602,根据所述获取请求确定顺序码,通过预设的散列函数、所述顺序码以及所述服务器的私钥,计算得到质量码;

生成模块604,根据所述质量码生成数字对象唯一标识符doi;

发送模块606,将所述质量码以及所述二维码返回所述第一用户,使所述第一用户在将所述质量码签名后存储在区块链中,将所述二维码用于产品防伪识别。

计算模块602,根据所述获取请求,确定历史上已经使用过的顺序码的最大数值,根据所述已经使用过的顺序码的最大数值,依顺序确定大于所述最大数值的顺序码,作为所述获取请求对应的顺序码。

计算模块602,将所述顺序码与所述服务器的私钥进行排列,得到的组合字符串,通过预设的散列函数对所述组合字符串进行散列计算,确定计算结果,将所述计算结果中的若干字符与所述顺序码组合,作为质量码。

所述顺序码为10位数字字符串;计算模块602,将所述顺序码的10位字符,与所述计算结果中的后6位字符组合,确定由16位字符组成的所述质量码。

生成模块604,将所述质量码中的前12位字符进行编码,生成对应所述质量码的二维码。

发送模块606,建立所述第一用户与所述质量码的对应关系,并存储至区块链中。

基于图5所示的利用区块链验证质量码的方法,本申请还对应提供一种利用区块链验证质量码的装置,如图8所示。包括:

接收模块700,接收第二用户发送的验证请求,其中,所述验证请求中携带有所述第二用户通过扫描二维码获取的验证码;

判断及验证模块702,根据区块链中已经存储的各签名后的质量码,判断是否存在与所述验证码匹配的质量码,若是,则对与所述验证码匹配的质量码的签名进行验签,并根据验签结果向所述第二用户返回验证结果,若否,则向所述第二用户返回证伪的验证结果。

判断及验证模块702,针对所述区块链中存储的每一个签名后的质量码,确定该签名后的质量码的明文,并判断该签名后的质量码的明文否需与所述验证码一致。

判断及验证模块702,根据预先存储的各第一用户与各质量码的对应关系,确定与所述验证码匹配的质量码对应的第一用户,根据所述第一用户的公钥,对所述匹配的质量码的签名进行验签,若验签通过,则向所述第二用户返回验证为真实的验证结果,若验签为通过,则向所述第二用户返回证伪的验证结果。

所述验证码为12位字符串;判断及验证模块702,针对所述区块链中存储的每一个签名后的质量码,确定该签名后的质量码的明文,并判断该签名后的质量码的明文中的前12个字符对应的字符串否需与所述验证码一致。

判断及验证模块702,当所述验签结果为通过时,向所述第二用户发送提示信息,以提示所述第二用户提供覆盖在可刮开涂层下的校验码,接收所述第二用户根据所述提示信息返回的校验码,判断所述校验码是否与所述质量码的明文中的后4个字符一致,若是,则向所述第二用户返回验证为真实的验证结果,若否,则向所述第二用户返回证伪的验证结果。

判断及验证模块702,从所述区块链中,确定与所述质量码对应的产品信息,向所述第二用户发送所述产品信息,其中,所述产品信息至少包括以下一种:生产信息、包装信息、运输信息、销售信息。

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

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