CN114363034B - 验证码生成及校验方法、装置、电子设备及存储介质 - Google Patents
验证码生成及校验方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114363034B CN114363034B CN202111643422.7A CN202111643422A CN114363034B CN 114363034 B CN114363034 B CN 114363034B CN 202111643422 A CN202111643422 A CN 202111643422A CN 114363034 B CN114363034 B CN 114363034B
- Authority
- CN
- China
- Prior art keywords
- verification
- target
- verification code
- code
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012795 verification Methods 0.000 title claims abstract description 668
- 238000000034 method Methods 0.000 title claims abstract description 126
- 238000012545 processing Methods 0.000 claims abstract description 42
- 238000006243 chemical reaction Methods 0.000 claims abstract description 30
- 230000008569 process Effects 0.000 claims description 23
- 238000004422 calculation algorithm Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本申请公开了一种验证码生成及校验方法、装置、电子设备及存储介质。其中,生成方法包括:获取来自于目标客户端的验证码获取请求,并确定与验证码获取请求对应的第一时间戳;按照预设的第一时间戳转换策略,确定出第一时间戳对应的第一时间数据;按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码。本申请实施例提供的方法可以解决相关技术中存在的在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种验证码生成及校验方法、装置、电子设备及存储介质。
背景技术
在相关技术中,验证码验证的流程:应用程序生成一个随机数,经网络传输到数据库所在的服务器,最终交由数据库保存,来记录验证码的状态(如:未使用、已使用等)。如果保存失败,那么可能是由于网络异常(如网络抖动、网络中断等),或者数据库异常(数据库宕机、数据库停止提供服务)造成的。
在实现本申请的过程中,发明人发现,如果验证码服务器生成的验证码在数据库中保存失败的情况下,即使用户反馈用于校验的验证码,验证码服务器便不存在用于对用户反馈的验证码进行校验的验证码,因此就无法继续进行后续的验证流程,最终会导致用户无法通过验证码进行一系列的注册或者登录操作。
由上可知,相关技术中的验证码服务器只能通过数据库中存储的验证码对用户反馈的验证码进行校验,进而容易出现在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题。
发明内容
为了解决上述在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题,本申请提供了一种验证码生成及校验方法、装置、电子设备及存储介质。
根据本申请实施例的一方面,提供了一种验证码生成方法,包括:
获取来自于目标客户端的验证码获取请求,并确定与所述验证码获取请求对应的第一时间戳;
按照预设的第一时间戳转换策略,确定出所述第一时间戳对应的第一时间数据;
按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码。
可选地,如前述的方法,所述按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码,包括:
获取预先生成的第一预设信息,其中,所述第一预设信息按照预设周期进行更新;
将所述第一时间数据与所述第一预设信息进行拼接,得到拼接信息;
根据所述拼接信息确定出所述目标验证码。
可选地,如前述的方法,所述按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码,包括:
获取所述验证码获取请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;
根据所述第一时间数据对所述标识信息进行加密,得到第一加密后数据;
根据所述第一加密后数据得到所述目标验证码。
可选地,如前述的方法,所述按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码,包括:
获取预先生成的第一密钥,其中,所述第一密钥按照预设周期进行更新;
获取所述验证码获取请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;
将所述第一时间数据与所述第一密钥进行拼接,得到第二密钥;
通过所述第二密钥对所述标识信息进行加密,得到第一加密后数据;
根据所述第一加密后数据得到所述目标验证码。
可选地,如前述的方法,所述根据所述第一加密后数据得到所述目标验证码,包括:
采用哈希算法对所述第一加密后数据进行处理,得到第一编码元素;
将所述第一编码元素按照预设策略处理后得到第一目标编码;
当所述第一目标编码属于预设区间时,将所述第一目标编码确定为所述目标验证码。
可选地,如前述的方法,当所述第一目标编码不属于所述预设区间时,所述方法还包括:
对比所述第一目标编码与所述预设区间的区间下限值;
当所述第一目标编码小于所述区间下限值时,基于所述第一目标编码与所述区间下限值,确定出所述目标验证码,其中,所述目标验证码与所述第一目标编码之差为所述区间下限值的整数倍;
或,
对比所述第一目标编码与所述预设区间的区间上限值;
当所述第一目标编码大于所述区间上限值时,确定所述第一目标编码与所述区间上限值的差值;
当所述差值属于所述预设区间时,将所述差值确定为所述目标验证码。
可选地,如前述的方法,所述按照预设的第一时间戳转换策略,确定出所述第一时间戳对应的第一时间数据第一时间戳,包括:
确定验证码的最小时间长度;
将计算出的所述第一时间戳与所述最小时间长度之间的商值,确定为所述第一时间数据。
根据本申请实施例的另一方面,还提供了一种验证码校验方法,包括:
获取来自于目标客户端的验证码校验请求,并确定与所述验证码校验请求对应的第二时间戳,其中,所述验证码校验请求中携带有待校验的目标验证码;
按照预设的第二时间戳转换策略,确定出所述第二时间戳对应的第二时间数据;
按照预设方案对所述第二时间数据进行处理,得到校验用验证码;
在确定存在与所述目标验证码一致的所述校验用验证码的情况下,判定所述目标验证码校验通过。
可选地,如前述的方法,所述按照预设方案对所述第二时间数据进行处理,得到用于反馈至所述目标客户端的校验用验证码,包括:
获取预先生成的第一预设信息,其中,所述第一预设信息按照预设周期进行更新;
将所述第二时间数据与所述第一预设信息进行拼接,得到拼接信息;
根据所述拼接信息确定出所述校验用验证码。
可选地,如前述的方法,所述按照预设方案对所述第二时间数据进行处理,得到用于反馈至所述目标客户端的校验用验证码,包括:
获取所述验证码校验请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;
根据所述第二时间数据对所述标识信息进行加密,得到第二加密后数据;
根据所述第二加密后数据得到所述校验用验证码。
可选地,如前述的方法,所述按照预设方案对所述第二时间数据进行处理,得到用于反馈至所述目标客户端的校验用验证码,包括:
获取预先生成的第一密钥,其中,所述第一密钥按照预设周期进行更新;
获取所述验证码校验请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;
将所述第二时间数据与所述第一密钥进行拼接,得到第三密钥;
通过所述第三密钥对所述标识信息进行加密,得到第二加密后数据;
根据所述第二加密后数据得到所述校验用验证码。
可选地,如前述的方法,所述根据所述第二加密后数据得到所述校验用验证码,包括:
采用哈希算法对所述第二加密后数据进行处理,得到第二编码元素;
将所述第二编码元素按照预设策略处理后得到第二目标编码;
当所述第二目标编码属于预设区间时,将所述第二目标编码确定为所述校验用验证码。
可选地,如前述的方法,当所述第二目标编码不属于所述预设区间时,所述方法还包括:
对比所述第二目标编码与所述预设区间的区间下限值;
当所述第二目标编码小于所述区间下限值时,基于所述第二目标编码与所述区间下限值,确定出所述校验用验证码,其中,所述校验用验证码与所述第二目标编码之差为所述区间下限值的整数倍;
或,
对比所述第二目标编码与所述预设区间的区间上限值;
当所述第二目标编码大于所述区间上限值时,确定所述第二目标编码与所述区间上限值的差值;
当所述差值属于所述预设区间时,将所述差值确定为所述校验用验证码。
可选地,如前述的方法,所述按照预设的第二时间戳转换策略,确定出所述第二时间戳对应的第二时间数据,包括:
按照验证码的最小时间长度以及所述第二时间戳,确定出候选时间戳,其中,所述候选时间戳与所述第二时间戳之间的差值为所述最小时间长度,且所述候选时间戳小于所述第二时间戳;
根据所述第二时间戳与所述最小时间长度之间的商值,得到与所述第二时间戳对应的第一校验用子时间数据,以及根据所述候选时间戳与所述最小时间长度之间的商值,得到与所述第二时间戳对应的第二校验用子时间数据,其中,所述第二时间数据包括所述第一校验用子时间数据和所述第二校验用子时间数据。
根据本申请实施例的另一方面,还提供了一种验证码生成装置,包括:
获取模块,用于获取来自于目标客户端的验证码获取请求,并确定与所述验证码获取请求对应的第一时间戳;
确定模块,用于按照预设的第一时间戳转换策略,确定出所述第一时间戳对应的第一时间数据;
处理模块,用于按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码。
根据本申请实施例的另一方面,还提供了一种验证码校验装置,包括:
获取模块,用于获取来自于目标客户端的验证码校验请求,并确定与所述验证码校验请求对应的第二时间戳,其中,所述验证码校验请求中携带有待校验的目标验证码;
确定模块,用于按照预设的第二时间戳转换策略,确定出所述第二时间戳对应的第二时间数据;
得到模块,用于按照预设方案对所述第二时间数据进行处理,得到校验用验证码;
校验模块,用于在确定存在与所述目标验证码一致的所述校验用验证码的情况下,所述目标验证码校验通过。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本申请实施例的另一方面,还提供了一种电子装置,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的方法可以使验证码是根据第一时间戳确定出的,并且,第一时间戳转换策略以及预设方案都是预先确定的,因此,在获取来自于目标客户端的待校验的验证码时,可以按照本实施例中的方法基于接收到的待校验的验证码的时间戳再次计算得到对应的校验用的验证码,以对待校验的验证码进行校验,因此,通过本实施例中的方法生成的目标验证码,即使未成功将该目标验证码存储至对应的数据库,后期也可以基于本实施例中的相同验证码生成方法得到用于对待校验的验证码进行校验的校验用验证码,进而,解决了相关技术中存在的在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种验证码生成方法的流程图;
图2为本申请实施例提供的一种验证码校验方法的流程图;
图3为本申请应用例提供的一种验证码处理方法的流程图;
图4为本申请实施例提供的一种验证码生成装置的框图;
图5为本申请实施例提供的一种验证码校验装置的框图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种验证码生成方法。可选地,在本实施例中,上述验证码生成方法可以应用于由终端和服务器所构成的硬件环境中。服务器通过网络与终端进行连接,可用于为终端或终端上安装的客户端提供服务(如广告推送服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器提供数据存储服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端可以并不限定于为PC、手机、平板电脑等。
本申请实施例的验证码生成方法可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。其中,终端执行本申请实施例的验证码生成方法也可以是由安装在其上的客户端来执行。
以由验证码服务器来执行本实施例中的验证码生成方法为例,图1为本申请实施例提供的一种验证码生成方法,包括如下所述步骤:
步骤S101,获取来自于目标客户端的验证码获取请求,并确定与验证码获取请求对应的第一时间戳。
本实施例中的验证码生成方法可以应用于验证码服务器生成验证码的场景,例如:生成短信验证码的场景、生成邮件验证码的场景等,也可以是生成其他类型的验证码的场景。本申请实施例中以生成短信验证码为例说明上述的验证码生成方法,对于其他类型的验证码,在不矛盾的情况下,上述的验证码生成方法同样适用。
以生成短信验证码为例,验证码服务器通过获取来自于目标客户端的验证码获取请求,确定需要生成与目标客户端相对应的目标验证码。
并且,在获取验证码获取请求的时候,可以确定与验证码获取请求对应的第一时间戳;可选地,第一时间戳可以是验证码获取请求中携带的,用于指示目标客户端发出验证码获取请求的时间点的时间戳;也可以是验证码服务器接收到该验证码获取请求的时间,例如,验证码服务器在接收到该验证码获取请求时,确定出本系统中Unix时间戳,并将其作为第一时间戳。
步骤S102,按照预设的第一时间戳转换策略,确定出第一时间戳对应的第一时间数据。
在确定出第一时间戳之后,可以根据第一时间戳以及预设的第一时间戳转换策略,确定出第一时间戳对应的第一时间数据。
第一时间戳转换策略可以是预先设置的,用于将第一时间戳转换为第一时间数据的转换策略。
例如,一般情况下,时间戳的最小整数位的单位为秒,因此第一时间戳转换策略可以是将第一时间戳转换为以分为最小单位的第一时间数据,确定出本系统中Unix时间戳所对应的分钟数,Unix时间戳1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,将其除以60,然后取整,即可得到自1970年1月1日(UTC)至今经过的分钟数,进而将该分钟数作为第一时间数据。
步骤S103,按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码。
由于一般情况下,验证码都是具有预设长度的字符串,例如,4个字符长度,或6个字符长度等等,而第一时间数据则不一定满足验证码的要求;因此,验证码服务器在确定出第一时间数据之后,可以按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码。
通过本实施例中的方法,可以使验证码是根据第一时间戳确定出的,并且,第一时间戳转换策略以及预设方案都是预先确定的,因此,在获取来自于目标客户端的待校验的验证码时,可以按照本实施例中的方法基于接收到的待校验的验证码的时间戳再次计算得到对应的校验用的验证码,以对待校验的验证码进行校验,因此,通过本实施例中的方法生成的目标验证码,即使未成功将该目标验证码存储至对应的数据库,后期也可以基于本实施例中的相同验证码生成方法得到用于对待校验的验证码进行校验的校验用验证码,进而,解决了相关技术中存在的在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题。
作为一种可选的实施方式,如前述的方法,所述步骤S103按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码,包括如下所述步骤:
步骤S201,获取预先生成的第一预设信息,其中,第一预设信息按照预设周期进行更新。
若只基于第一时间数据生成验证码,可以解决相关技术中存在的在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题,但是,同时也会出现该验证码生成策略被破解后,导致出现安全隐患的问题。因此,验证码服务器可以预先生成第一预设信息,并使该第一预设信息按照预设周期进行更新。
例如,验证码服务器每5分钟更新一个密钥s(即,第一预设信息),并存储至目标位置。在获取验证码获取请求时,从目标位置获取该密钥s。
步骤S202,将第一时间数据与第一预设信息进行拼接,得到拼接信息。
在获取第一时间数据和第一预设信息之后,可以通过将第一时间数据与第一预设信息进行拼接,得到拼接信息。
例如,按照第一时间数据+第一预设信息的方式进行拼接得到拼接信息,也可以按照第一预设信息+第一时间数据的方式拼接得到拼接信息,只要保持拼接方式保持一致即可,以避免拼接方式变化,导致后期在对目标验证码进行校验时,无法还原出与目标验证码一致的校验用验证码。
步骤S203,根据拼接信息确定出目标验证码。
在得到拼接信息之后,即可基于通过拼接信息确定出验证码的生成方式,以及该拼接信息,确定出目标验证码。
通过本实施例中的方法,通过在第一时间数据的基础上拼接第一预设信息,并使第一预设信息按照预设周期进行更新,进而可以提升最终得到的目标验证码的安全性,即使本验证码生成方法或者第一预设信息被破解也可以有效保障最终目标验证码的安全性。
作为一种可选的实施方式,如前述的方法,所述步骤S103按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码,包括如下所述步骤:
步骤S301,获取验证码获取请求中携带的标识信息,其中,标识信息与目标客户端唯一对应。
若同一时刻不同的客户端都向验证码服务器发出验证码获取请求,则容易造成用于对不同的账号或客户端校验的验证码出现相同的情况,因此,可以在获取验证码获取请求之后,获取验证码获取请求中携带的标识信息,并且标识信息与目标客户端唯一对应。
例如,标识信息可以是目标客户端绑定的手机号p,在目标客户端生成该验证码获取请求的时候,可以使验证码获取请求携带有该标识信息。
步骤S302,根据第一时间数据对标识信息进行加密,得到第一加密后数据。
在获取第一时间数据以及标识信息之后,可以根据第一时间数据得到用于进行加密的密钥,进而得到对该标识信息加密后的第一加密后数据。
步骤S303,根据第一加密后数据得到目标验证码。
在得到第一加密后数据之后,即可基于通过加密后数据确定出验证码的生成方式,以及该第一加密后数据,确定出目标验证码。
通过本实施例中的方法,采用通过标识信息得到目标验证码的方式,可以使最终得到的目标验证码与目标客户端唯一对应,进而可以避免不同的客户端对应的验证码相同,进而导致验证码服务器对验证码的校验出现错乱的问题。
作为一种可选的实施方式,如前述的方法,所述步骤S103按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码,包括如下所述步骤:
步骤S401,获取预先生成的第一密钥,其中,第一密钥按照预设周期进行更新。
验证码服务器可以预先生成第一密钥,将该第一密钥存储至目标位置,并使该第一密钥按照预设周期进行更新。
例如,验证码服务器每5分钟更新一个密钥s(即,第一密钥),并存储至目标位置。在获取验证码获取请求时,从目标位置获取该密钥s。
步骤S402,获取验证码获取请求中携带的标识信息,其中,标识信息与目标客户端唯一对应。
在获取验证码获取请求之后,获取验证码获取请求中携带的标识信息,并且标识信息与目标客户端唯一对应。
例如,标识信息可以是目标客户端绑定的手机号p,在目标客户端生成该验证码获取请求的时候,可以使验证码获取请求携带有该标识信息。
步骤S403,将第一时间数据与第一密钥进行拼接,得到第二密钥;
在获取第一时间数据和第一密钥之后,可以通过将第一时间数据与第一密钥进行拼接,得到第二密钥。
例如,按照第一时间数据+第一密钥的方式进行拼接得到第二密钥,也可以按照第一密钥+第一时间数据的方式拼接得到第二密钥,只要保持拼接方式保持一致即可,以避免拼接方式变化,导致后期在对目标验证码进行校验时,无法还原出与目标验证码一致的校验用验证码。
步骤S404,通过第二密钥对标识信息进行加密,得到第一加密后数据。
在得到第二密钥之后,可以通过第二密钥对标识信息进行加密,得到第一加密后数据。
例如,利用上述密钥x+s,对当前用户手机号p进行HmacSHA256(一种散列哈希HASH加密工具)加密后,得到一个加密后的字符串m,其中,x为第一时间数据,s为第一密钥。并且,采用HmacSHA256算法,对三元组对用户的手机号p进行加密,避免了手机号相似时(比如13512345678与13512345679)的碰撞问题。
步骤S405,根据第一加密后数据得到目标验证码。
在得到第一加密后数据之后,即可基于所需验证码的数值范围,对该第一加密后数据进行处理后得到目标验证码。
通过本实施例中的方法,通过在第一时间数据的基础上拼接第一密钥,并使第一密钥按照预设周期进行更新,进而可以提升最终得到的目标验证码的安全性,即使本验证码生成方法或者第一密钥被破解也可以有效保障最终目标验证码的安全性;同时,采用通过标识信息得到目标验证码的方式,可以使最终得到的目标验证码与目标客户端唯一对应,进而可以避免不同的客户端对应的验证码相同,进而导致验证码服务器对验证码的校验出现错乱的问题。作为一种可选的实施方式,如前述的方法,所述步骤根据第一加密后数据得到目标验证码,包括如下所述步骤:
步骤S501,采用哈希算法对第一加密后数据进行处理,得到第一编码元素。步骤S502,将第一编码元素按照预设策略处理后得到第一目标编码。步骤S503,当第一目标编码属于预设区间时,将第一目标编码确定为目标验证码。
在得到第一加密后数据之后,可以采用哈希算法依次将第一加密后数据中的字符映射成对应的数字,乘以一个固定的系数后相加,得到一个数字h。
在得到第一编码元素之后,可以将第一编码元素按照预设策略处理后,得到第一目标编码,预设策略可以是丢弃第一编码元素的符号位,进而将h转化一个正数k。
在得到第一目标编码之后,可以判断第一目标编码是否在预设区间内,当第一目标编码在预设区间内时,即可将第一目标编码确定为目标验证码。例如,在预设区间为[200000,400000)的情况下,则当第一目标编码在[200000,400000)时,如,321456,将第一目标编码作为目标验证码,
通过本实施例中的方法,提供了一种可以快速根据第一加密后数据得到目标验证码的实现方法。
作为一种可选的实施方式,如前述的方法,当第一目标编码不属于预设区间时,方法还包括如下所述步骤:
步骤S601,对比第一目标编码与预设区间的区间下限值。
步骤S602,当第一目标编码小于区间下限值时,基于第一目标编码与区间下限值,确定出目标验证码,其中,目标验证码与第一目标编码之差为区间下限值的整数倍。或,
步骤S701,对比第一目标编码与预设区间的区间上限值;
步骤S702,当第一目标编码大于区间上限值时,确定第一目标编码与区间上限值的差值;
步骤S703,当差值属于预设区间时,将差值确定为目标验证码。
例如,当预设区间为[200000,400000)时,如果k小于200000,则加上200000,如果k大于400,000,则将k对400000进行取余;重复此过程,直到k的大小在某个区间比如[200000,400000)内。该区间可以任意调整,只要可以与保存在Redis或者MySQL的验证码区分开即可,方便后续的校验流程
通过本实施例中的方法,可以在第一目标编码小于预设区间或者大于预设区间的情况下,将该第一目标编码调整至满足预设区间内的目标验证码,进而可以达到将所有第一目标编码调整至预设区间内的目的。
作为一种可选的实施方式,如前述的方法,所述步骤S102按照预设的第一时间戳转换策略,确定出第一时间戳对应的第一时间数据第一时间戳,包括如下所述步骤:
步骤S801,确定验证码的最小时间长度。
在一般情况下,为了避免验证码过快过期,或者验证码长期占用服务器资源,验证码都有对应的有效时长,因此可以确定出验证码服务器中预先设定的最小时间长度,最小时间长度可以根据实际应用场景进行设定,例如,1分钟,2分钟等等。
步骤S802,将计算出的第一时间戳与最小时间长度之间的商值,确定为第一时间数据。
在确定出最小时间长度之后,可以计算出第一时间戳与最小时间长度之间的商值,例如,当最小时间长度为1分钟(即,60秒)时,可以将第一时间时间戳除以60,并且取整后即可得到自1970年1月1日(UTC)至今经过的分钟数。
通过本实施例中的方法,可以使客户端在最小时间长度内反馈的待校验验证码时,基于反馈该待校验验证码的时间可以计算得到与该待校验验证码相同的校验用验证码,进而达到了无需数据库中的信息即可对待校验验证码进行校验的目的。
如图2所示,根据本申请实施例的另一方面,还提供了一种验证码校验方法,包括如下所述步骤:
步骤P101,获取来自于目标客户端的验证码校验请求,并确定与验证码校验请求对应的第二时间戳,其中,验证码校验请求中携带有待校验的目标验证码。
本实施例中的验证码校验方法可以应用于验证码服务器对来自于客户端的验证码进行校验的场景,例如:对短信验证码校验的场景、对邮件验证码校验的场景等,也可以是对其他类型的验证码校验的场景。本申请实施例中以对短信验证码为例说明上述的验证码校验方法,对于其他类型的验证码,在不矛盾的情况下,上述的验证码校验方法同样适用。
以对短信验证码校验为例,验证码服务器通过获取来自于目标客户端的验证码校验请求,确定需要对验证码校验请求中携带的目标验证码进行校验。
并且,在获取验证码获取请求的时候,可以确定与验证码获取请求对应的第二时间戳;可选地,第二时间戳可以是验证码校验请求中携带的,用于指示目标客户端发出验证码校验请求的时间点的时间戳;也可以是验证码服务器接收到该验证码校验请求的时间,例如,验证码服务器在接收到该验证码校验请求时,确定出本系统中Unix时间戳,并将其作为第二时间戳。
步骤P102,按照预设的第二时间戳转换策略,确定出第二时间戳对应的第二时间数据。
在确定出第二时间戳之后,可以根据第二时间戳以及预设的第二时间戳转换策略,确定出第二时间戳对应的第二时间数据。
第二时间戳转换策略可以是预先设置的,用于将第二时间戳转换为第二时间数据的转换策略,为了在第二时间戳与第一时间戳相同的情况下,能够生成与目标验证码相同的校验用验证码,则需保证按照第二时间戳转换策略对第一时间戳转换出的第二时间数据至少包括第一时间数据。
例如,一般情况下,时间戳的最小整数位的单位为秒,因此第二时间戳转换策略可以是将第二时间戳转换为以分为最小单位的第二时间数据,确定出本系统中Unix时间戳所对应的分钟数,Unix时间戳1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,将其除以60,然后取整,即可得到自1970年1月1日(UTC)至今经过的分钟数,进而将该分钟数作为第二时间数据。
步骤P103,按照预设方案对第二时间数据进行处理,得到校验用验证码。
由于一般情况下,验证码都是具有预设长度的字符串,例如,4个字符长度,或6个字符长度等等,而第二时间数据则不一定满足验证码的要求;因此,验证码服务器在确定出第二时间数据之后,可以按照预设方案对第二时间数据进行处理,得到用于对目标验证码校验的至少一个校验用验证码。
步骤P104,在确定存在与目标验证码一致的校验用验证码的情况下,判定目标验证码校验通过。
在得到校验用验证码之后,可以通过判断是否存在与目标验证码一致的校验用验证码,并且在存在与目标验证码一致的校验用验证码的情况下,判定目标验证码校验通过。
通过本实施例中的方法,无需通过数据库中的验证码即可对来自于客户端的目标验证码进行校验,进而,解决了相关技术中存在的在数据库对验证码保存失败的情况下,无法对用户反馈的验证码进行校验的技术问题。
作为一种可选的实施方式,如前述的方法,所述步骤P103按照预设方案对第二时间数据进行处理,得到用于反馈至目标客户端的校验用验证码,包括如下所述步骤:
步骤P201,获取预先生成的第一预设信息,其中,第一预设信息按照预设周期进行更新。
在生成验证码的预设方案中,在根据第一时间数据以及第一预设信息得到校验用验证码的情况下,则对校验码进行校验过程中,也需获取第一预设信息。
步骤P202,将第二时间数据与第一预设信息进行拼接,得到拼接信息;
步骤P203,根据拼接信息确定出校验用验证码。
在获取第二时间数据和第一预设信息之后,可以通过将第二时间数据与第一预设信息进行拼接,得到拼接信息。
例如,按照第二时间数据+第一预设信息的方式进行拼接得到拼接信息,也可以按照第一预设信息+第二时间数据的方式拼接得到拼接信息,只要保持拼接方式与步骤S201至S203中生成验证码中采用的拼接方式保持一致即可,以避免拼接方式变化,导致在对目标验证码进行校验时,无法还原出与目标验证码一致的校验用验证码。
在得到拼接信息之后,即可基于通过拼接信息确定出验证码的生成方式,以及该拼接信息,确定出校验用验证码。
通过本实施例中的方法,通过在第二时间数据的基础上拼接第一预设信息,并使第二预设信息按照预设周期进行更新,进而可以提升最终得到的目标验证码的安全性,即使本验证码生成方法或者第一预设信息被破解也可以有效保障最终校验用验证码的安全性。
作为一种可选的实施方式,如前述的方法,所述步骤P103按照预设方案对第二时间数据进行处理,得到用于反馈至目标客户端的校验用验证码,包括如下所述步骤:
步骤P301,获取验证码校验请求中携带的标识信息,其中,标识信息与目标客户端唯一对应;
步骤P302,根据第二时间数据对标识信息进行加密,得到第二加密后数据;
步骤P303,根据第二加密后数据得到校验用验证码。
在获取验证码获取请求之后,获取验证码获取请求中携带的标识信息,并且标识信息与目标客户端唯一对应。
例如,标识信息可以是目标客户端绑定的手机号p,在目标客户端生成该验证码获取请求的时候,可以使验证码获取请求携带有该标识信息。
在获取第二时间数据以及标识信息之后,可以根据第二时间数据得到用于进行加密的密钥,进而得到对该标识信息加密后的第二加密后数据。
在得到第二加密后数据之后,即可基于通过加密后数据确定出验证码的生成方式,以及该第二加密后数据,确定出目标验证码。
通过本实施例中的方法,采用通过标识信息得到目标验证码的方式,可以使最终得到的目标验证码与目标客户端唯一对应,进而可以避免不同的客户端对应的验证码相同,进而导致验证码服务器对验证码的校验出现错乱的问题。作为一种可选的实施方式,如前述的方法,所述步骤P103按照预设方案对第二时间数据进行处理,得到用于反馈至目标客户端的校验用验证码,包括如下所述步骤:
步骤P401,获取预先生成的第一密钥,其中,第一密钥按照预设周期进行更新;
步骤P402,获取验证码校验请求中携带的标识信息,其中,标识信息与目标客户端唯一对应;
步骤P403,将第二时间数据与第一密钥进行拼接,得到第三密钥;
步骤P404,通过第三密钥对标识信息进行加密,得到第二加密后数据;
步骤P405,根据第二加密后数据得到校验用验证码。
验证码服务器可以预先生成第一密钥,将该第一密钥存储至目标位置,并使该第一密钥按照预设周期进行更新。
例如,验证码服务器每5分钟更新一个密钥s(即,第一密钥),并存储至目标位置。在获取验证码获取请求时,从目标位置获取该密钥s。
在获取验证码获取请求之后,获取验证码获取请求中携带的标识信息,并且标识信息与目标客户端唯一对应。
例如,标识信息可以是目标客户端绑定的手机号p,在目标客户端生成该验证码获取请求的时候,可以使验证码获取请求携带有该标识信息。
在获取第一时间数据和第一密钥之后,可以通过将第一时间数据与第一密钥进行拼接,得到第二密钥。
例如,按照第一时间数据+第一密钥的方式进行拼接得到第二密钥,也可以按照第一密钥+第一时间数据的方式拼接得到第二密钥,只要保持拼接方式保持一致即可,以避免拼接方式变化,导致后期在对目标验证码进行校验时,无法还原出与目标验证码一致的校验用验证码。
在得到第二密钥之后,可以通过第二密钥对标识信息进行加密,得到第一加密后数据。
例如,利用上述密钥x+s,对当前用户手机号p进行HmacSHA256(一种散列哈希HASH加密工具)加密后,得到一个加密后的字符串m,其中,x为第一时间数据,s为第一密钥。并且,采用HmacSHA256算法,对三元组对用户的手机号p进行加密,避免了手机号相似时(比如13512345678与13512345679)的碰撞问题。
在得到第一加密后数据之后,即可基于所需验证码的数值范围,对该第一加密后数据进行处理后得到目标验证码。
通过本实施例中的方法,通过在第一时间数据的基础上拼接第一密钥,并使第一密钥按照预设周期进行更新,进而可以提升最终得到的目标验证码的安全性,即使本验证码生成方法或者第一密钥被破解也可以有效保障最终目标验证码的安全性;同时,采用通过标识信息得到目标验证码的方式,可以使最终得到的目标验证码与目标客户端唯一对应,进而可以避免不同的客户端对应的验证码相同,进而导致验证码服务器对验证码的校验出现错乱的问题。
作为一种可选的实施方式,如前述的方法,所述步骤P405根据第二加密后数据得到校验用验证码,包括如下所述步骤:
步骤P501,采用哈希算法对第二加密后数据进行处理,得到第二编码元素;
步骤P502,将第二编码元素按照预设策略处理后得到第二目标编码;
步骤P503,当第二目标编码属于预设区间时,将第二目标编码确定为校验用验证码。
在得到第二加密后数据之后,可以采用哈希算法依次将第二加密后数据中的字符映射成对应的数字,乘以一个固定的系数后相加,得到一个数字h’。
在得到第二编码元素之后,可以将第二编码元素按照预设策略处理后,得到第二目标编码,预设策略可以是丢弃第二编码元素的符号位,进而将h’转化一个正数k’。
在得到第二目标编码之后,可以判断第二目标编码是否在预设区间内,当第二目标编码在预设区间内时,即可将第二目标编码确定为校验用验证码。例如,在预设区间为[200000,400000)的情况下,则当第二目标编码在[200000,400000)时,如,321456,将第二目标编码作为校验用验证码,
通过本实施例中的方法,提供了一种可以快速根据第一加密后数据得到目标验证码的实现方法。
作为一种可选的实施方式,如前述的方法,当第二目标编码不属于预设区间时,方法还包括如下所述步骤:
步骤P601,对比第二目标编码与预设区间的区间下限值;
步骤P602,当第二目标编码小于区间下限值时,基于第二目标编码与区间下限值,确定出校验用验证码,其中,校验用验证码与第二目标编码之差为区间下限值的整数倍;或,
步骤P701,对比第二目标编码与预设区间的区间上限值;
步骤P702,当第二目标编码大于区间上限值时,确定第二目标编码与区间上限值的差值;
步骤P703,当差值属于预设区间时,将差值确定为校验用验证码。
由于在目标验证码生成阶段中,对于第一目标编码不属于预设区间的情况,需要采用步骤S601至S602,以及步骤S701至S703中的方法使第二目标编码确定出预设区间内的校验用验证码;因此,本实施例中也需采用与步骤S601至S602,以及步骤S701至S703相同的上述步骤P601至P602,以及步骤P701至P703得到校验用验证码,以在第二目标编码与第一目标编码相同的情况下,可以确定出与目标验证码相同的校验用验证码。
作为一种可选的实施方式,如前述的方法,所述步骤P102按照预设的第二时间戳转换策略,确定出第二时间戳对应的第二时间数据,包括如下所述步骤:
步骤P801,按照验证码的最小时间长度以及第二时间戳,确定出候选时间戳,其中,候选时间戳与第二时间戳之间的差值为最小时间长度,且候选时间戳小于第二时间戳。
由于验证码的发出与接收到来自于客户端的待校验的验证码之间存在时间差,因此,为了避免用户在第x分钟收到了验证码,在第x+1分钟才进行验证,验证码服务端可以尝试计算两个验证码。
在获取第二时间戳之后,通过第二时间戳减去最小时间长度即可得到候选时间戳。
步骤P802,根据第二时间戳与最小时间长度之间的商值,得到与第二时间戳对应的第一校验用子时间数据,以及根据候选时间戳与最小时间长度之间的商值,得到与第二时间戳对应的第二校验用子时间数据,其中,第二时间数据包括第一校验用子时间数据和第二校验用子时间数据。
可以通过第二时间戳除以最小时间长度,得到与第二时间戳对应的第一校验用子时间数据;并且在得到候选时间戳之后,即可通过候选时间戳除以最小时间长度,即可得到第二校验用子时间数据。
因此,可以得到包括有第一校验用子时间数据和第二校验用子时间数据的第二时间数据,即,可以生成第一校验用子时间数据对应的验证码,以及生成第二校验用子时间数据对应的验证码。
通过本实施例中的方法,可以在目标验证码是客户端在两倍的最小时间长度之间反馈的情况下,均可以对该目标验证码进行验证,进而可以有效提升验证码验证的成功率,以及避免因为用户操作慢或者网络延迟造成的验证失败的情况。
作为一种可选的实施方式,一种验证码处理方法,该方法包括:
步骤S11,执行用于将第一验证码存储至数据库集群的存储操作,得到第一验证码的最终存储结果,其中,第一验证码根据接收的验证码获取请求生成;
在本申请实施例中,验证码服务器接收请求方发送的验证码获取请求,请求方可以是客户端,验证码服务器在接收到验证码获取请求后,采用随机算法生成第一验证码,并将第一验证码存储至数据库集群中。数据库集群中包括至少两种不同类型的数据库,例如:MySQL数据库、Redis数据库等等。所述第一验证码为第一候选验证码或第二候选验证码中的任一个,且第一候选验证码所在的数值区间异于第二候选验证码所在的数值区间,例如,比如第一候选验证码所在的数值区间为[1000,2000),第二候选验证码所在的数值区间为[2000,3000)。
并且,步骤S11,将第一验证码存储至数据库集群,得到第一验证码对应的最终存储结果,包括以下步骤A1-A3:
步骤A1,执行用于将第一候选验证码存储至数据库集群中的第一数据库的第一存储操作,得到第一候选验证码的第一存储结果;
在本申请实施例中,第一存储操作可以是用于将第一验证码存储至第一数据库的操作,当验证码发服务器将第一候选验证码发送至数据库集群中的第一数据库(例如:MySQL数据库),第一数据库(MySQL数据库)会将第一存储结果反馈至验证码服务器。
步骤A2,当根据第一存储结果确定第一候选验证码存储失败时,执行用于将第二候选验证码存储至数据库集群中的第二数据库的第二存储操作,并获取第二候选验证码的第二存储结果,其中,第二数据库与第一数据库的类型不同;
在本申请实施例中,当第一验证码在第一数据库(MySQL数据库)中存储失败时,执行第二存储操作。
第二存储操作可以是用于将第二候选验证码存储至第二数据库的操作,当验证码服务器会将第二候选验证码重新存储到数据库集群中的第二数据库(例如:Redis数据库),第二数据库(Redis数据库)会将第二候选验证码的第二存储结果反馈至验证码服务器。
需要说明的是,本申请实施例通过在数据库集群中设置两个不同类型,且相互独立的数据库。从而避免一个类型数据库不可用时,验证码就保存失败的情况。然而采用两种不同类型的数据库可以避免故障同时影响到两个数据库。例如:一个MySQL数据库的安全漏洞或者运维操作故障,不会影响到Redis数据库。
并且,第一候选验证码存储到第一数据库失败时,并不会直接把第一候选验证码继续往第二数据库中存储。而是重新生成一个第二候选数据库,并且由于第一候选验证码所在的数值区间异于第二候选验证码所在的数值区间,因此能够直接根据接收到来自于客户端的验证码的范围,直接确定是在第一数据库中查询,还是在第二数据库中查询。
步骤A3,基于第一存储结果或第二存储结果确定出最终存储结果。
在得到第一存储结果之后,即可在第一存储结果指示存储成功的情况下,得到第一候选验证码成功存储至第一数据库中最终存储结果,在第一存储结果指示存储失败的情况下,则基于第二存储结果,并在第二存储结果指示存储成功的情况下,得到第二候选验证码成功存储至第二数据库中最终存储结果。
在本申请实施例中,在将第二存储结果确定为最终存储结果之后,方法还包括:当根据最终存储结果确定第一验证码存储成功时,将第一验证码发送至请求方。
在本申请实施例中,最终存储结果为第一验证码存储成功时,则表示第一验证码使用,并将第一验证码发送到请求方。
作为一个示例,验证码服务器1对应第一数据库集群,第一数据库集群包括:两个不同类型的数据库(MySQL数据库和Redis数据库),验证码服务器n对应第n数据库集群,第n数据库集群包括:(Redis数据库和MySQL数据库)。当验证码服务器1或者验证码服务器n接收到验证码获取请求时,会随机生成一个验证码,并将验证码存储至数据库集群中。
步骤S12,当根据最终存储结果确定第一验证码存储失败时,执行用于跳转至前述步骤S101的跳转操作。
在本申请实施例中,当根据最终存储结果确定第一验证码在数据库集群中存储失败时,则表示第一数据库和第二数据库在当前均不可用,因此需要获取请求方对应的请求方标识,请求方标识用于验证码服务器后续在本地离线生成第二验证码。其中,请求方标识可以是客户端的ID、用户标识或者用户手机号等等。
本申请实施例提供的方法在数据库出现异常导致无法保存验证码时,验证码服务器能够重新生成一个临时的验证码,并发送给请求方,以此保证了验证码的处理效率,保证了服务能够正常运作。
根据本申请的另一方面,提供一种应用前述任一实施例的应用例:
1.为了避免数据库异常,本应用例引入两个相互独立的异构数据库,一个是Redis数据库,一个是MySQL数据库。从而避免Redis数据库不可用时,验证码就保存失败的问题。同时异构数据库可以避免相同的故障,同时影响到两个数据库,比如一个MySQL数据库的安全漏洞或者运维操作故障,不会影响到Redis数据库中的数据。
在如图3所示的验证码处理方法流程图中,第一候选验证码保存到Redis数据库失败后,会自动尝试将验证码保存到MySQL数据库中。从而避免Redis数据库异常时,验证码保存失败的问题。
2.解决Redis数据库异常时服务保存失败的问题后,仍有两个可能出现问题的地方:(I)MySQL数据库和Redis数据库可能同时出问题,虽然概率已经很小,但是仍然可能出现;(II)验证码服务器到Redis数据库或者MySQL数据库之间的网络可能出问题。为了避免网络异常,或者Redis数据库和MySQL数据库同时不可用导致验证码保存失败,还提供一种不依赖网络和数据库的验证码生成和校验机制,应用于验证码服务器。
由于有验证码服务器的本地算法的兜底策略,因此生成验证码的流程中,即便在Redis数据库、MySQL数据库全部宕机,同时验证码服务器与Redis数据库、MySQL数据库之间的网络也中断的情况下,依然可以成功返回验证码并对来自于客户端的验证码进行校验。具体实现方法如下所述:
用户获取短信验证码(即,来自于验证码服务器的目标验证码)和用户校验短信验证码(即,客户端发送至验证码服务器的目标验证码),是在两次不同的HTTP请求中完成。因此,生成短信验证码的规则需要遵循一定的规则,这样等到校验时,按照同样的规则,才可以校验通过。
生成规则如下:
a)计算出验证码服务器当前Unix时间戳(即,第一时间戳)所对应的分钟数(即,第一时间数据),Unix时间戳1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,将其除以60(即,最小时间长度),即可得到自1970年1月1日(UTC)至今经过的分钟数。
b)第一步拿到的分钟数假设为x,和一个服务端存储的密钥s(即,第一密钥)拼接之后的整体作为密钥x+s(即,第二密钥),其中的密钥s会定期更新,避免因代码泄露导致算法被破解。
c)利用上述密钥x+s,对当前用户手机号p(即,其中一种标识信息)进行HmacSHA256加密后,得到一个加密后的字符串m(即,第一加密后数据)。
d)对字符串m进行hash算法,即依次将m中的字符映射成对应的数字,乘以一个固定的系数后相加,得到一个数字h(即,第一编码元素)。
e)直接丢弃数字h的符号位,从而将h转化一个正数k(即,第一目标编码)。
f)如果k小200000,则加上200000,如果k大于400,000,则将k对400000进行取余;重复此过程,直到k的大小在某个预设区间比如[200000,400000)内,得到目标验证码。该区间可以任意调整,只要可以与保存在Redis或者MySQL的验证码区分开即可,方便后续的校验流程。
至此,得到目标验证码,可以通过短信将该目标验证码发送给用户。
如果当前Unix时间戳对应的分钟数x,服务端密钥s,以及用户的手机号p,后续将使用三元组(x,s,p)表示,那么最终得到的k也是一样的。
因此验证码服务器收到验证码校验请求时,首先判断目标验证码是否在上述预设区间内,如果目标验证码,在上述预设区间内,则判断该目标验证码未存储至数据库中,需通过验证码服务器直接进行算法校验。获取当前Unix时间戳(即,第二时间戳)对应的分钟数y(即,第二时间数据),如果y与x一样,那么就可以计算出与验证码k同样的验证码k’(即,校验用验证码)。
为了避免用户在第x分钟收到了验证码,在第x+1分钟才进行验证,因此验证码服务器会按照前述步骤a至f计算两个验证码:(y,s,p)对应的k1,以及(y-1,s,p)对应的k2,如果k1或者k2中的一个等于x,则校验通过。由于验证码服务器只会验证当前y,y-1两种情况,因此该算法生成的验证码,只有2分钟的有效期,极大了提升验证码的安全性。
如图4所示,根据本申请实施例的另一方面,还提供了一种验证码生成装置,包括:
获取模块11,用于获取来自于目标客户端的验证码获取请求,并确定与验证码获取请求对应的第一时间戳;
确定模块12,用于按照预设的第一时间戳转换策略,确定出第一时间戳对应的第一时间数据;
处理模块13,用于按照预设方案对第一时间数据进行处理,得到用于反馈至目标客户端的目标验证码。
如图5所示,根据本申请实施例的另一方面,还提供了一种验证码校验装置,包括:
获取模块21,用于获取来自于目标客户端的验证码校验请求,并确定与验证码校验请求对应的第二时间戳,其中,验证码校验请求中携带有待校验的目标验证码;
确定模块22,用于按照预设的第二时间戳转换策略,确定出第二时间戳对应的第二时间数据;
得到模块23,用于按照预设方案对第二时间数据进行处理,得到校验用验证码;
校验模块24,用于在确定存在与目标验证码一致的校验用验证码的情况下,目标验证码校验通过。
本申请实施例还提供一种电子设备,如图6所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现上述实施例的步骤。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的验证码处理方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的验证码处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk)等。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种验证码生成方法,其特征在于,包括:
获取来自于目标客户端的验证码获取请求,并确定与所述验证码获取请求对应的第一时间戳;
按照预设的第一时间戳转换策略,确定出所述第一时间戳对应的第一时间数据;
按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码,包括:获取所述验证码获取请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;根据所述第一时间数据对所述标识信息进行加密,得到第一加密后数据;根据所述第一加密后数据得到所述目标验证码;或,获取预先生成的第一密钥,其中,所述第一密钥按照预设周期进行更新;获取所述验证码获取请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;将所述第一时间数据与所述第一密钥进行拼接,得到第二密钥;通过所述第二密钥对所述标识信息进行加密,得到第一加密后数据;根据所述第一加密后数据得到所述目标验证码;
所述根据所述第一加密后数据得到所述目标验证码,包括:采用哈希算法对所述第一加密后数据进行处理,得到第一编码元素;将所述第一编码元素按照预设策略处理后得到第一目标编码;当所述第一目标编码不属于预设区间时,所述方法还包括:对比所述第一目标编码与所述预设区间的区间下限值;当所述第一目标编码小于所述区间下限值时,基于所述第一目标编码与所述区间下限值,确定出所述目标验证码,其中,所述目标验证码与所述第一目标编码之差为所述区间下限值的整数倍;或,对比所述第一目标编码与所述预设区间的区间上限值;当所述第一目标编码大于所述区间上限值时,确定所述第一目标编码与所述区间上限值的差值;当所述差值属于所述预设区间时,将所述差值确定为所述目标验证码。
2.根据权利要求1所述的方法,其特征在于,所述按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码,包括:
获取预先生成的第一预设信息,其中,所述第一预设信息按照预设周期进行更新;
将所述第一时间数据与所述第一预设信息进行拼接,得到拼接信息;
根据所述拼接信息确定出所述目标验证码。
3.根据权利要求1所述的方法,其特征在于,在将所述第一编码元素按照预设策略处理后得到第一目标编码之后,所述方法还包括:
当所述第一目标编码属于预设区间时,将所述第一目标编码确定为所述目标验证码。
4.根据权利要求1所述的方法,其特征在于,所述按照预设的第一时间戳转换策略,确定出所述第一时间戳对应的第一时间数据第一时间戳,包括:
确定验证码的最小时间长度;
将计算出的所述第一时间戳与所述最小时间长度之间的商值,确定为所述第一时间数据。
5.一种验证码校验方法,其特征在于,包括:
获取来自于目标客户端的验证码校验请求,并确定与所述验证码校验请求对应的第二时间戳,其中,所述验证码校验请求中携带有待校验的目标验证码;
按照预设的第二时间戳转换策略,确定出所述第二时间戳对应的第二时间数据;
按照预设方案对所述第二时间数据进行处理,得到校验用验证码,包括:获取所述验证码校验请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;根据所述第二时间数据对所述标识信息进行加密,得到第二加密后数据;根据所述第二加密后数据得到所述校验用验证码;或,获取预先生成的第一密钥,其中,所述第一密钥按照预设周期进行更新;获取所述验证码校验请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;将所述第二时间数据与所述第一密钥进行拼接,得到第三密钥;通过所述第三密钥对所述标识信息进行加密,得到第二加密后数据;根据所述第二加密后数据得到所述校验用验证码;
所述根据所述第二加密后数据得到所述校验用验证码,包括:采用哈希算法对所述第二加密后数据进行处理,得到第二编码元素;将所述第二编码元素按照预设策略处理后得到第二目标编码;当所述第二目标编码不属于预设区间时,所述方法包括:对比所述第二目标编码与所述预设区间的区间下限值;当所述第二目标编码小于所述区间下限值时,基于所述第二目标编码与所述区间下限值,确定出所述校验用验证码,其中,所述校验用验证码与所述第二目标编码之差为所述区间下限值的整数倍;或,对比所述第二目标编码与所述预设区间的区间上限值;当所述第二目标编码大于所述区间上限值时,确定所述第二目标编码与所述区间上限值的差值;当所述差值属于所述预设区间时,将所述差值确定为所述校验用验证码;
在确定存在与所述目标验证码一致的所述校验用验证码的情况下,判定所述目标验证码校验通过。
6.根据权利要求5所述的方法,其特征在于,所述按照预设方案对所述第二时间数据进行处理,得到用于反馈至所述目标客户端的校验用验证码,包括:
获取预先生成的第一预设信息,其中,所述第一预设信息按照预设周期进行更新;
将所述第二时间数据与所述第一预设信息进行拼接,得到拼接信息;
根据所述拼接信息确定出所述校验用验证码。
7.根据权利要求5所述的方法,其特征在于,在将所述第二编码元素按照预设策略处理后得到第二目标编码之后,所述方法还包括:当所述第二目标编码属于预设区间时,将所述第二目标编码确定为所述校验用验证码。
8.根据权利要求5所述的方法,其特征在于,所述按照预设的第二时间戳转换策略,确定出所述第二时间戳对应的第二时间数据,包括:
按照验证码的最小时间长度以及所述第二时间戳,确定出候选时间戳,其中,所述候选时间戳与所述第二时间戳之间的差值为所述最小时间长度,且所述候选时间戳小于所述第二时间戳;
根据所述第二时间戳与所述最小时间长度之间的商值,得到与所述第二时间戳对应的第一校验用子时间数据,以及根据所述候选时间戳与所述最小时间长度之间的商值,得到与所述第二时间戳对应的第二校验用子时间数据,其中,所述第二时间数据包括所述第一校验用子时间数据和所述第二校验用子时间数据。
9.一种验证码生成装置,其特征在于,包括:
获取模块,用于获取来自于目标客户端的验证码获取请求,并确定与所述验证码获取请求对应的第一时间戳;
确定模块,用于按照预设的第一时间戳转换策略,确定出所述第一时间戳对应的第一时间数据;
处理模块,用于按照预设方案对所述第一时间数据进行处理,得到用于反馈至所述目标客户端的目标验证码,包括:获取所述验证码获取请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;根据所述第一时间数据对所述标识信息进行加密,得到第一加密后数据;根据所述第一加密后数据得到所述目标验证码;或,获取预先生成的第一密钥,其中,所述第一密钥按照预设周期进行更新;获取所述验证码获取请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;将所述第一时间数据与所述第一密钥进行拼接,得到第二密钥;通过所述第二密钥对所述标识信息进行加密,得到第一加密后数据;根据所述第一加密后数据得到所述目标验证码;所述根据所述第一加密后数据得到所述目标验证码,包括:采用哈希算法对所述第一加密后数据进行处理,得到第一编码元素;将所述第一编码元素按照预设策略处理后得到第一目标编码;当所述第一目标编码不属于预设区间时,对比所述第一目标编码与所述预设区间的区间下限值;当所述第一目标编码小于所述区间下限值时,基于所述第一目标编码与所述区间下限值,确定出所述目标验证码,其中,所述目标验证码与所述第一目标编码之差为所述区间下限值的整数倍;或,对比所述第一目标编码与所述预设区间的区间上限值;当所述第一目标编码大于所述区间上限值时,确定所述第一目标编码与所述区间上限值的差值;当所述差值属于所述预设区间时,将所述差值确定为所述目标验证码。
10.一种验证码校验装置,其特征在于,包括:
获取模块,用于获取来自于目标客户端的验证码校验请求,并确定与所述验证码校验请求对应的第二时间戳,其中,所述验证码校验请求中携带有待校验的目标验证码;
确定模块,用于按照预设的第二时间戳转换策略,确定出所述第二时间戳对应的第二时间数据;
得到模块,用于按照预设方案对所述第二时间数据进行处理,得到校验用验证码,包括:获取所述验证码校验请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;根据所述第二时间数据对所述标识信息进行加密,得到第二加密后数据;根据所述第二加密后数据得到所述校验用验证码;或,获取预先生成的第一密钥,其中,所述第一密钥按照预设周期进行更新;获取所述验证码校验请求中携带的标识信息,其中,所述标识信息与所述目标客户端唯一对应;将所述第二时间数据与所述第一密钥进行拼接,得到第三密钥;通过所述第三密钥对所述标识信息进行加密,得到第二加密后数据;根据所述第二加密后数据得到所述校验用验证码;所述根据所述第二加密后数据得到所述校验用验证码,包括:采用哈希算法对所述第二加密后数据进行处理,得到第二编码元素;将所述第二编码元素按照预设策略处理后得到第二目标编码;当所述第二目标编码不属于预设区间时,对比所述第二目标编码与所述预设区间的区间下限值;当所述第二目标编码小于所述区间下限值时,基于所述第二目标编码与所述区间下限值,确定出所述校验用验证码,其中,所述校验用验证码与所述第二目标编码之差为所述区间下限值的整数倍;或,对比所述第二目标编码与所述预设区间的区间上限值;当所述第二目标编码大于所述区间上限值时,确定所述第二目标编码与所述区间上限值的差值;当所述差值属于所述预设区间时,将所述差值确定为所述校验用验证码;
校验模块,用于在确定存在与所述目标验证码一致的所述校验用验证码的情况下,所述目标验证码校验通过。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至8中任一项所述的方法步骤。
12.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:
存储器,用于存放计算机程序;
处理器,用于通过运行存储器上所存放的程序来执行权利要求1至8中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111643422.7A CN114363034B (zh) | 2021-12-29 | 2021-12-29 | 验证码生成及校验方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111643422.7A CN114363034B (zh) | 2021-12-29 | 2021-12-29 | 验证码生成及校验方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114363034A CN114363034A (zh) | 2022-04-15 |
CN114363034B true CN114363034B (zh) | 2024-02-02 |
Family
ID=81104134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111643422.7A Active CN114363034B (zh) | 2021-12-29 | 2021-12-29 | 验证码生成及校验方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114363034B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117375838A (zh) * | 2022-06-30 | 2024-01-09 | 中兴通讯股份有限公司 | 一种验证方法、终端设备、网络设备及介质 |
CN115691229A (zh) * | 2022-10-13 | 2023-02-03 | 中国民航科学技术研究院 | 一种计算航段流量的方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997880A (zh) * | 2010-12-01 | 2011-03-30 | 湖南智源信息网络技术开发有限公司 | 一种用于网络页面或接口的安全验证方法及其装置 |
CN102300182A (zh) * | 2011-09-07 | 2011-12-28 | 飞天诚信科技股份有限公司 | 一种基于短信的身份验证方法、系统和装置 |
CN102622631A (zh) * | 2012-02-28 | 2012-08-01 | 深圳润鸿鑫数码技术有限公司 | 一种用于防伪设备的防伪检验装置及防伪方法 |
WO2016183338A1 (en) * | 2015-05-12 | 2016-11-17 | Dynamics Inc. | Dynamic security codes, tokens, displays, cards, devices, multi-card devices, systems and methods |
CN106330458A (zh) * | 2016-08-23 | 2017-01-11 | 宇龙计算机通信科技(深圳)有限公司 | 一种验证码的处理方法及装置 |
CN106899610A (zh) * | 2017-03-22 | 2017-06-27 | 世纪恒通科技股份有限公司 | 一种无需存储的验证码验证方法 |
CN109167666A (zh) * | 2018-08-31 | 2019-01-08 | 深圳众赢维融科技有限公司 | 验证码生成、解密、移动支付方法和装置 |
CN110971415A (zh) * | 2019-12-13 | 2020-04-07 | 重庆邮电大学 | 一种天地一体化空间信息网络匿名接入认证方法及系统 |
CN111259365A (zh) * | 2020-01-10 | 2020-06-09 | 河北先见软件科技股份有限公司 | 一种动态验证码生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7121401B2 (ja) * | 2017-06-08 | 2022-08-18 | 溝口 さとし | システムへのログイン方法 |
-
2021
- 2021-12-29 CN CN202111643422.7A patent/CN114363034B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997880A (zh) * | 2010-12-01 | 2011-03-30 | 湖南智源信息网络技术开发有限公司 | 一种用于网络页面或接口的安全验证方法及其装置 |
CN102300182A (zh) * | 2011-09-07 | 2011-12-28 | 飞天诚信科技股份有限公司 | 一种基于短信的身份验证方法、系统和装置 |
CN102622631A (zh) * | 2012-02-28 | 2012-08-01 | 深圳润鸿鑫数码技术有限公司 | 一种用于防伪设备的防伪检验装置及防伪方法 |
WO2016183338A1 (en) * | 2015-05-12 | 2016-11-17 | Dynamics Inc. | Dynamic security codes, tokens, displays, cards, devices, multi-card devices, systems and methods |
CN106330458A (zh) * | 2016-08-23 | 2017-01-11 | 宇龙计算机通信科技(深圳)有限公司 | 一种验证码的处理方法及装置 |
CN106899610A (zh) * | 2017-03-22 | 2017-06-27 | 世纪恒通科技股份有限公司 | 一种无需存储的验证码验证方法 |
CN109167666A (zh) * | 2018-08-31 | 2019-01-08 | 深圳众赢维融科技有限公司 | 验证码生成、解密、移动支付方法和装置 |
CN110971415A (zh) * | 2019-12-13 | 2020-04-07 | 重庆邮电大学 | 一种天地一体化空间信息网络匿名接入认证方法及系统 |
CN111259365A (zh) * | 2020-01-10 | 2020-06-09 | 河北先见软件科技股份有限公司 | 一种动态验证码生成方法 |
Non-Patent Citations (3)
Title |
---|
"互联网+云联络中心"的设计与实现;石玉坤;;互联网天地(第10期);全文 * |
A Low-Collision-Rates Timestamp Hashing and Verification Algorithm in Distribution Grid Based on PTP protocol;An Sicheng等;2021 International Conference on Control Science and Electric Power Systems (CSEPS);全文 * |
抵抗内部攻击的无线传感器网络身份认证协议;余通;李纪平;;福建电脑(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114363034A (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11997220B2 (en) | Scalable certificate management system architectures | |
CN114363034B (zh) | 验证码生成及校验方法、装置、电子设备及存储介质 | |
JP2004007690A (ja) | 通信ネットワークにおける第1通信関与体の正当性をチェックする方法および装置 | |
CN105228111A (zh) | 资源订阅处理方法及装置 | |
CN112202588A (zh) | 一种远程维护设备方法、下发维护指令方法、装置及系统 | |
TW201342050A (zh) | 試用軟體處理系統及方法 | |
US20170230804A1 (en) | Report-Based Control Of Repeated Multicast Data Transmission | |
CN110943852A (zh) | 配置dns服务器的装置及方法、dns服务器及dns服务器更新配置的方法 | |
CN101636965B (zh) | 确定发送密钥更新请求的时间延迟的系统和方法 | |
CN112347428A (zh) | 一种分布式软件产品离线授权方法 | |
US11695751B2 (en) | Peer-to-peer notification system | |
CN113645257B (zh) | 一种身份认证方法及装置、电子设备及存储介质 | |
US20220100493A1 (en) | METHOD FOR UPGRADING IoT TERMINAL DEVICE AND ELECTRONIC DEVICE THEREOF | |
CN112235290B (zh) | 基于区块链的物联网设备管理方法及第一物联网设备 | |
CN111431957B (zh) | 文件处理方法、装置、设备和系统 | |
CN110083786A (zh) | 一种链接验证方法及装置 | |
CN115589298A (zh) | 区块链的信息验证方法、装置和系统、设备、介质 | |
US10409579B1 (en) | Application healthcheck communicator | |
CN111917787B (zh) | 请求检测方法、装置、电子设备和计算机可读存储介质 | |
US11106527B2 (en) | Hardware error corrections based on policies | |
CN113438212A (zh) | 基于区块链节点的通信安全管理方法及区块链安全系统 | |
CN113595240B (zh) | 电力数据的检测方法、装置、设备及存储介质 | |
CN112968921A (zh) | 一种数据更新方法、装置和计算机可读存储介质 | |
CN106790150B (zh) | 一种会话保持方法和装置 | |
CN115567557B (zh) | 工业数据的多目标报送方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |