掌桥专利:专业的专利平台
掌桥专利
首页

一种验证码生成方法、通信设备及计算机可读存储介质

文献发布时间:2023-06-19 18:34:06


一种验证码生成方法、通信设备及计算机可读存储介质

技术领域

本发明涉及验证技术领域,尤其涉及一种验证码生成方法、通信设备及计算机可读存储介质。

背景技术

在一些场景下,例如,登录、密码修改等场景,为提高安全性,需要验证码进行验证。

然而,目前生成的验证码的常见形式是数字、字母、数字与字母的组合、图片中包含特定元素、两元的四则运算、滑动验证码等,目前的验证码比较简单,容易被识别,即目前常见的验证码的安全性较差。

发明内容

本发明实施例提供一种验证码生成方法、通信设备及计算机可读存储介质,以解决验证码安全性较差的问题。

为了解决上述技术问题,本发明是这样实现的:

第一方面,本发明实施例提供了一种验证码接收方法,包括:

向服务端发送验证码请求;

接收所述服务端响应于所述验证码请求发送的二维矩阵验证码,其中,在所述二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,所述多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象。

第二方面,本发明实施例提供了一种验证码生成方法,包括:

在接收到终端发送的验证码请求的情况下,生成随机数序列;

根据所述随机数序列以及活动对象在初始矩阵中的起始位置,生成所述活动对象到所述矩阵中预设期望位置的第一路径;

基于所述第一路径以及所述初始矩阵,生成二维矩阵验证码,其中,在所述二维矩阵验证码中,所述活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,所述多个障碍物关联的位置对应的值相同,且所述预设期望位置关联提示对象;

向所述终端发送所述二维矩阵验证码。

第三方面,本发明实施例还提供一种通信设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的验证码生成方法中的步骤。

第四方面,本发明实施例还提供一种可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的验证码生成方法中的步骤。

在本实施例中,终端从服务端接收的验证码是二维矩阵验证码,而且在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象,如此,可丰富验证码内容,降低被识别的风险,从而提高验证码的安全性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的验证码接收方法的流程图;

图2是本发明实施例提供的二维网格示意图;

图3是本发明实施例提供的验证码生成方法的流程图;

图4是本发明实施例提供的验证界面图之一;

图5是本发明实施例提供的验证界面图之二;

图6是本发明实施例提供的验证界面图之三;

图7是本发明实施例提供的验证界面图之四;

图8是本发明实施例提供的验证界面图之五;

图9是本发明实施例提供的验证界面图之六;

图10是本发明实施例提供的验证界面图之七;

图11是本发明实施例提供的验证界面图之八;

图12是本发明实施例提供的验证码接收装置的结构图;

图13是本发明实施例提供的验证码生成装置的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1是本发明实施例提供的验证码接收方法的流程图,该方法可由终端执行,如图1所示,包括以下步骤:

步骤101:向服务端发送验证码请求。

验证是提高安全性的一种重要手段,例如,在登录过程中,可通过登录验证确保登录安全性。通过验证码进行验证是一种重要的方式,验证码不同的形式,对应不同的验证过程。在需要进行验证的情况下,用户可在终端进行操作,生成验证码请求,向服务端发送验证码请求,用于请求服务端下发验证码。

终端可以是一种能够实现智能输入输出以及进行验证的设备,例如,台式电脑或移动终端等,移动终端可以是手机、平板电脑(Tablet Personal Computer)、膝上型电脑(Laptop Computer)、车载电脑、个人数字助理(personal digital assistant,简称PDA)、移动上网装置(Mobile Internet Device,MID)或可穿戴式设备(Wearable Device)等。服务端可以是提供验证的验证平台所在的服务端,该服务端可以用独立的服务端或者是多个服务端组成的服务端集群来实现。

步骤102:接收服务端响应于验证码请求发送的二维矩阵验证码;

其中,在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象。

验证码的形式是二维矩阵,也可以理解是二维数组,接收的二维验证码用于终端进行验证输入以调整二维验证码,实现验证。需要说明的是,二维矩阵验证码可以是通过第一路径以及初始矩阵生成的验证码,第一路径为通过随机数序列以及活动对象在初始矩阵中的起始位置,在初始矩阵中生成的活动对象到预设期望位置的路径,随机数序列为响应于验证码请求生成的序列。

在本实施例中,终端从服务端接收的验证码是二维矩阵验证码,而且在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象,如此,可丰富验证码内容,降低被识别的风险,从而提高验证码的安全性。

在一个实施例中,接收服务端响应于验证码请求发送的二维矩阵验证码之后,还包括:

根据二维矩阵验证码,生成二维网格,二维网格的大小与二维矩阵验证码的大小相同

显示验证界面;

其中,验证界面包括二维网格的中间子网格、活动对象、提示对象以及中间子网格对应的中间子矩阵关联的目标障碍物对象,活动对象位于中间子网格中的初始网格中,初始网格在二维网格中的位置与初始位置在二维矩阵验证码中的位置匹配,提示对象位于中间子网格中预设期望网格中,预设期望网格在二维网格中的位置与二维矩阵验证码中的预设期望位置匹配,一个障碍物位于中间子网格中的一个网格中,中间子网格的行数与二维网格的行数相同,且位于二维网格的第一子网格和第二子网格之间。

例如,活动对象在二维矩阵验证码中关联的位置是第x行第y列,则在二维网格中活动对象所在的网格是第x行第y列的网格。预设期望位置为二维验证码矩阵最后一行的第z列,则预设期望网格是二维网格中最后一行的第z列的网格。

在收到二维矩阵验证码后,可显示验证界面,验证界面中可显示根据二维矩阵验证码生成的二维网格中的中间子网格,如图2所示,用户可在验证界面中查看二维矩阵验证码的中间子矩阵中活动对象、目标障碍物以及提示对象对应的具体呈现,以便用户进行验证输入等。一个示例中,第一子网格与第二子网格的大小相同,且行数均与二维矩阵验证码的行数相同。

在一个实施例中,验证界面还包括分布于中间子网格的相对两侧的多个移动控件,一行网格对应两个移动控件,两个移动控件分布于行网格的相对两侧;

显示验证界面之后,还包括:

接收用户对验证界面中多个移动控件的至少部分移动控件有序的移动输入序列;

响应于移动输入序列,根据移动输入序列的移动方向以及至少部分移动控件的行标识,对二维矩阵验证码进行调整,得到第一验证结果矩阵;其中,参考行网格关联的对象按照参考移动方向移动单元网格,且参考行网格中活动对象按照参考移动方向移动单元网格后,活动对象所在的网格的下一行网格中与活动对象所在的网格同列的目标网格不存在障碍物的情况下,活动对象移动到目标网格,参考行网格为参考移动控件的行标识对应的行网格,参考移动方向为参考移动控件的移动输入的移动方向,参考移动控件为至少部分控件中的任一控件;

向服务端发送第一验证结果矩阵、移动输入序列的移动方向以及至少部分移动控件的行标识。

需要说明的是,例如,活动对象所在的网格为第x行第y列的网格,下一行网格则是第x+1行网格,目标网格则是第x+1行第y列的网格。

每对一个移动控件进一次移动输入,可对最新的二维矩阵验证码进行一次调整,每一次移动输入,对验证界面中显示的子网格中与该移动输入对应的行网格中关联的对象进行一次移动。即用户可通过在验证界面的输入操作,调整网格中对象的位置,从而可实现验证界面的调整,另外,需要修改二维矩阵验证码,以生成第一验证结果矩阵,以用于服务端进行验证。需要说明的是,至少部分移动控件的行标识可以理解是移动输入序列的行标识,一个移动输入对应一个行标识,即表示该移动输入是对网格中该行标识对应的行的移动控件的输入,移动控件在每次移动输入后恢复到原位。

在一个实施例中,响应于移动输入序列,根据移动输入序列的移动方向以及至少部分移动控件的行标识,对二维矩阵验证码进行调整,得到第一验证结果矩阵,包括:

在接收到参考移动控件的移动输入的情况下,根据参考移动控件的移动输入的移动方向以及参考移动控件的行标识,对二维矩阵验证码进行调整,直到根据移动输入序列中每个移动输入的移动方向进行调整完毕,得到第一验证结果矩阵;

其中,根据参考移动控件的移动输入的移动方向以及参考移动控件的行标识,对二维矩阵验证码进行调整,包括以下至少一项:

在移动方向为第一方向的情况下,将二维矩阵验证码的参考行中第l列的值调整为第l+1列的值,参考行的最后一列的值通过第三预设值填充,并在活动对象的位置的下一行的与活动对象的位置同列的目标位置的值为第一值的情况下,将活动对象的位置的值调整为第一值,将活动对象关联到目标位置以及将目标位置的值调整为第二预设值,l大于或等于1,且小于二维矩阵验证码的列数,参考行为移动方向对应的行标识对应的行;

在移动方向为第二方向的情况下,将二维矩阵验证码的参考行中第l+1列的值调整为第l列的值,参考行的第1列的值通过第三预设值填充,并在活动对象的位置的下一行的与活动对象的位置同列的目标位置的值为第一值的情况下,将活动对象的位置的值调整为第一值,将活动对象关联到目标位置以及将目标位置的值调整为第二预设值。

移动控件的移动方向可以是第一方向或第二方向,第一方向可以理解是沿二维网格的列从大到小的方向,第二方向与第一方向相反。活动对象的位置可以理解是活动对象在二维矩阵验证码中关联的位置。需要说明的是,活动对象当前关联的位置为第x行第y列,下一行则是第x+1行,目标位置则是第x+1行第y列。

在本实施例中,移动方向不同,对二维矩阵验证码的调整方式不同,可满足不同的调整需求。

参见图3,一种验证码生成方法,可应用于服务端,包括:

步骤301:在接收到终端发送的验证码请求的情况下,生成随机数序列。

步骤302:根据随机数序列以及活动对象在初始矩阵中的起始位置,生成活动对象到矩阵中预设期望位置的第一路径。

可预先设定预设行数(h)和预设列数(w),可根据预设列数以及随机函数确定起始位置,例如,可通过随机函数Random(1,w-2)确定起始位置。活动对象可在预先初始化得到的初始矩阵中关联起始位置,该起始位置可以是初始矩阵的第一行中的随机位置,根据随机数序列,可省测绘给你起始位置与预设期望位置之间的第一路径。

步骤303:基于第一路径以及初始矩阵,生成二维矩阵验证码。

其中,在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象。

步骤304:向终端发送二维矩阵验证码。

即在初始矩阵基础上生成二维矩阵验证码的过程中,还考虑了第一路径。

在本实施例中,终服务端生成的验证码是二维矩阵验证码,而且在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象,如此,可丰富验证码内容,且考虑了第一路径,可降低被识别的风险,从而提高验证码的安全性。

在一个实施例中,初始矩阵中各位置的值均为第一值,第一路径包括有序的且具有路径方向的M个路径分段,任一路径分段关联两个位置,M为正整数,

基于第一路径以及初始矩阵,生成二维矩阵验证码,包括:

按照M个路径方向以及M个路径分段,对初始矩阵中部分位置的值进行有序调整,得到二维矩阵验证码。

需要说明的是,每个路径分段关联的两个位置是相邻的,行标识或列标识相差1。M个路径方向即为M个路径分段的路径方向,在生成二维矩阵验证码过程中,是利用M个路径方向以及M个路径分段对初始矩阵中部分位置的值进行有序调整得到,不但考虑了M个路径分段,而且还考虑了其方向性和次序,提高得到的二维验证码的安全性。

在一个实施例中,按照M个路径方向以及M个路径分段,对初始矩阵中部分位置的值进行有序调整,得到二维矩阵验证码,包括:

对于M个路径方向中每个路径方向,根据路径方向,对初始矩阵的值进行目标调整,并根据路径方向的路径分段关联的位置,对活动对象的位置进行更新;

在根据M个路径方向对初始矩阵完成调整的情况下,得到二维矩阵验证码,并将活动对象的位置更新为起始位置;

其中,目标调整包括:

在路径方向为第一方向的情况下,根据活动对象的位置确定第一位置,将初始矩阵中第一位置的值调整为第一预设值,或者

在路径方向为第二方向的情况下,根据活动对象的位置确定第二位置,将初始矩阵中第二位置的值调整为第一预设值,或者

在路径方向为第三方向的情况下,根据活动对象的位置确定第三位置,将初始矩阵中第三位置的值调整为第一预设值;

其中,第三方向分别与第一方向以及第二方向垂直。

预设值可根据需要设定,本实施例中不作具体限定,例如,第一预设值可以为1等,可以理解的是,第一预设值对应的位置关联障碍物对象。在本实施例中,路径方向可以是第一方向、第二方向或第三方向,不同路径方向,对应需要调整为第一预设值的位置不同,可实现不同位置的值调整为第一预设值,以满足不同的需求。

一个示例中,第一位置包括第一子位置和第二子位置中的至少一项,第一子位置包括在第三方向上与活动对象的位置相邻的位置,第二子位置包括初始矩阵的第一目标列中与活动对象的位置同行的位置,第一目标列为s列中以活动对象的位置为基础沿着第二方向的任一列,s列位于中间区域与第一边界区域之间;

第二位置包括第三子位置和第四子位置中的至少一项,第三子位置包括在第三方向上与活动对象的位置相邻的位置,第四子位置包括初始矩阵的第二目标列中与活动对象的位置同行的位置,第二目标列为t列中以活动对象的位置为基础沿着第一方向的任一列,t列位于第二边界区域与中间区域之间,第一边界区域与第二边界区域分别包括至少一列区域;

第三位置包括第五子位置和第六子位置中的至少一项,第五子位置包括第一目标列中与活动对象的位置同行的位置,第六子位置包括第二目标列中与活动对象的位置同行的位置;

其中,s、t均为正整数。

在一个实施例中,根据随机数序列以及活动对象在初始矩阵中的起始位置,生成活动对象到初始矩阵中预设期望位置的第一路径,包括:

S1:根据第一预设数值,对随机数序列中第i个随机数进行取模处理,得到第i个余数,i的初始值为1,i小于或等于N,N为随机数序列中随机数总个数;

S2:根据第i个余数,确定第i次移动方向;

S3:在第i次移动方向与k个路径方向不相同,且第j-1个位置与预设期望位置不相同的情况下,将第i次移动方向确定为一个路径方向,根据第i次移动方向以及第j-1个位置,得到第j个位置,并将i增加1以及将j增加1;

重复执行S1-S2,直到活动对象的位置与预设期望位置相同,得到M个路径方向,j的初始值为1,j≤M,第0个位置为起始位置;

其中,k为正整数,k个路径方向为在确定第i次移动方向之前的确定顺序后k个路径方向。

需要说明的是,将第i次移动方向确定为一个路径方向,根据第i次移动方向以及第j-1个位置,得到第j个位置后,即可确定M个路径分段中第j个路径分段,即第j个路径分段关联第j个位置和第j-1个位置,对应的路径方向为第j-1个位置到第j个位置的方向,第j个路径分段可以理解是第j-1个位置到第j个位置的路径分段。直到动对象的位置与预设期望位置相同,即得到M个路径方向,也可得到M个路径分段,M个路径分段与M个路径方向一一对应。第一预设数值可根据实际需要预先设定,在本实施例中不作具体限定,例如,可以取3等。k的值可以预先根据实际需要设定,不作具体限定,例如,k的取值可以为2。

从随机数序列的第1个随机数到第N个随机数逐一取值,比如随机数序列为123456789,则第一个取值为1,下一个取值为2,依次往下。现设获取的一位随机数为A,则对A进行余3除法得到余数。若为0则路径的下一步方向为向下(第三方向),若为1则路径的下一步方向为向左(第一方向),若为2则路径的下一步方向为向右(第二方向)。构建路径的过程中始终记录相同方向的次数,当路径中的方向超过k次相同时,本次路径方向无效(不构建路径),继续取随机码的下一位进行路径构建。直至随机码位数用尽或活动对象达到预设期望位置为止。在本实施例中,通过上述构建第一路径的过程,可提高得到的第一路径的随机性,依此生成二维矩阵验证码,减少验证码被识别的风险,提高二维矩阵验证码的安全性。

在一个实施例中,方法还包括:

S4:在第i次移动方向与k个路径方向相同,且j-1个位置与预设期望位置不相同的情况下,将i增加1;

重复执行S1-S2,直到活动对象的位置与预设期望位置相同,得到M个路径方向。

即构建路径的过程中始终记录相同方向的次数,当路径中的方向超过k次相同时,本次路径方向无效(不构建路径),继续取随机码的下一位进行路径构建,这样,以提高构建的路径的安全性。

在一个实施例中,在接收到终端发送的验证码请求的情况下,生成随机数序列,包括:

响应于验证码请求,基于目标信息,生成随机数序列,其中,目标信息包括以下至少一项:

验证码请求中请求发送时间戳;

验证码请求中终端的身份标识;

服务端为终端提供验证码服务的对象的散列编码。

例如,可根据第二预设数值(例如,可以取6等),在生成随机数序列过程中,在目标信息包括一项信息的情况下,根据第二预设数值,将目标信息的每一位数分别进行取模处理,得到随机数序列,随机数序列中包括目标信息的每一位数取模处理后的数值;在目标信息包括至少两项信息的情况下,根据第二预设数值,将至少两项信息,以位为单位进行相加取模处理,得到随机数序列。在本实施例中,生成随机数序列的过程中,可利用验证码请求中请求发送时间戳、验证码请求中终端的身份标识和服务端为终端提供验证码服务的对象的散列编码中的至少一项生成,可提高生成随机数序列的安全性。

在一个实施例中,向终端发送二维矩阵验证码之后,还包括;

接收终端发送的第一验证结果矩阵、有序的移动输入序列的移动方向以及移动输入序列的行标识;

在第一验证结果矩阵的预设行的值中只包括一个第二预设值的情况下,利用移动输入序列的移动方向以及移动输入序列的行标识,对初始二维矩阵验证码进行有序调整,得到第二验证结果矩阵,预设行与预设期望位置所在行相同;

在第一验证结果与第二验证结果矩阵匹配的情况下,向终端发送第一提示,第一提示用于表示验证成功。

在本实施例中,首先判断第一验证结果矩阵的预设行的值中是否只包括一个第二预设值,若包括至少两个第二预设值,则表示验证识别,返回表示验证失败的第二提示。在第一验证结果矩阵的预设行的值中只包括一个第二预设值的情况下,可进一步利用移动输入序列的移动方向以及移动输入序列的行标识,对初始二维矩阵验证码进行有序调整,得到第二验证结果矩阵,判断第一验证结果与第二验证结果矩阵是否匹配,在匹配的情况下,向终端发送表示验证成功的第一提示,这样,可提高验证的精确性。

在一个实施例中,移动输入序列的移动方向为移动方向链表,移动方向链表中任一节点中存储一移动方向以及对应的行标识;

利用移动输入序列的移动方向以及移动输入序列的行标识,对二维矩阵验证码进行有序调整,得到第二验证结果矩阵,包括:

在移动方向链表不为空的情况下,获取移动方向链表中头节点的目标移动方向和目标行标识,并删除移动方向链表的头节点;

通过目标移动方向以及目标行标识,对二维矩阵验证码进行调整,返回在移动方向链表不为空的情况下,获取移动方向链表中头节点的目标移动方向,并删除移动方向链表的头节点的步骤,直到移动方向链表为空的情况下,得到第二验证结果矩阵。

在本实施例中,通过链表的形式实现对初始二维矩阵验证码进行有序调整,提高调整的准确性,从而提高第二验证结果矩阵的准确性。

在一个实施例中,通过目标移动方向以及目标行标识,对二维矩阵验证码进行调整,包括以下至少一项:

在目标移动方向为第一方向的情况下,将二维矩阵验证码的目标行中第l列的值调整为第l+1列的值,目标行的最后一列的值通过第三预设值填充,并在活动对象的位置的下一行的与活动对象的位置同列的第四位置的值为第一值的情况下,将活动对象的位置的值调整为第一值,将活动对象关联到第四位置以及将第四位置的值调整为第二预设值,l大于或等于1,且小于矩阵验证码的列数,目标行为目标行标识对应的行;

在目标移动方向为第二方向的情况下,将二维矩阵验证码的目标行中第l+1列的值调整为第l列的值,目标行的第1列的值通过第三预设值填充,并在活动对象的位置的下一行的与活动对象的位置同列的第四位置的值为第一值的情况下,将活动对象的位置的值调整为第一值,将活动对象关联到第四位置以及将第四位置的值调整为第二预设值。

下面以一个具体实施例对上述方法过程加以具体说明。

第一部分:服务端验证码生成。

第一步,根据验证码的使用场景,设定验证码的复杂程度。比如登录可使用复杂度正常的,修改密码的场景则提高复杂度。即定义网格大小。设网格宽为w,高为h,以图4为例,则w=8,h=5。根据常识可知,数值越大,复杂度将越高。

第二步,随机确定活动对象(图4中的心形)在第一行的位置。公式为Random(1,w-2),即除去左右边界单元格外的其他单元格。此处的随机值为编程系统自带的随机函数功能。

第三步,计算随机数序列,根据生成的随机数序列在网格中构建一条活动对象到达预设期望位置(图5中的出口区)的第一路径,确保生成的验证码随机且有解。

第四步,数据封装。创建一个[h+1,w+8]的二维数组,初始化值为0,即初始举证,比宽度多8是因为左右两侧各存在2个隐藏位,且支持移动2个单元格。当隐藏位置填入-1,无障碍的位置填入0,有障碍的位置填入1,活动对象位置填入2,无效位置填入-2,最后一行填入0。

用户可见的位置是图2中示意的中间子网格,验证的目标是调整网格中障碍物的位置使活动对象达到示意的预设期望位置,当网格中的障碍物以整行为单位左右平移时,平移前网格边缘中元素(包括障碍物,也包括无障碍位置),将移出网格区域,进而移入“隐藏移动位置”,同理,“无效位置”是存储隐藏移动位置的元素。

第五步,根据第三步活动对象移动轨迹生成必要障碍物。假设经过前三步的过程,生成的轨迹为图6所示。

活动对象第1次向左移动,可确定两个必要障碍物:右侧边框外增加一个障碍物,活动对象原位置的下方增加一个障碍物,如图7所示。根据第四步的数据结构定义,可知是一个[6,16]的二维数组,则必须的障碍物在[1,13]和[2,10],其位置值由第四步定义可知,被赋值为1。

活动对象第2次向下移动,说明下方没有障碍物,与些同时目标结束了上一行的操作,左右两侧随机补入一个障碍物,如图8所示。设补入位置在左侧,即[1,4]位置被赋值为1。

活动对象第3次向下移动,同理可知。注此时目标已经往同一个方向连续移动了两次(向下),则下一次若随机码的方向依然为向下,则不执行,继续取下一个随机码确定移动方向,直至移动方向为新方向。如图9所示。

活动对象第4次向左移动,逻辑同第1次移动,不再赘述;第5次向下移动,不再赘述。

活动对象第6次向右移动,可确定两个必要障碍物,左侧边框外增加一个障碍物,活动对象原位置的下方增加一个障碍物。如图10所示。

第六步,随机丰富地生成其他非必要障碍物,以使网格区域多处存在障碍物,不过于单调。封装数据(第四步定义的结构体)返回给终端。

第二部分:终端展示及响应处理:

终端的展示是数据封装可视化的过程,根据服务端传输过来的数据进行解密、解析处理,进行前端界面元素绘制,此部分为领域可实现的技术,不再赘述。终端的重点在于响应用户的操作并记录。

终端根据服务端返回的信息显示验证界面,验证界面主要包括四个核心元素:活动对象(图5中的心形示意标志)、预设期望位置(图5中的出口区,也是验证的依据)、带有障碍物的网格(图5的中心区域,黑色圆环为障碍物)、左右移动把手(即移动控件,图5中风格外左右两侧的双向箭头)。

图4是图5的底层样式的示意图,以最上面一行为例,活动对象的下方(从上数第二行)存在2个连续障碍物,无法继续向下。网格外的左右两把手各有一个障碍物,说明可以左移或右移一个单元格。同理,第二行的左把手有两个障碍物,右把手没有障碍物,说明第二行可以右移两个单元格无法左移。对于用户而言,需要操作左右把手来确定是否可以左移或是右移,且确定可移动几个单元格,用户在不操作的情况下是无法辨别的,从而避免被机器识别后破解。

由于图4和图5是表示的一个示例,不同之处仅在于图1是底层样式,图4是用户可见样式,下文为方便描述,统一使用图1做说明。

对于图5所示的验证码情况,用户需完成以下步骤,方可完成验证:

第一步:点击第一行左侧把手,将整行进行左移一个单元格;

第二步:点击第三行左侧把手,将整行进行左移一个单元格;

第三步:点击第四行右侧把手,将整行进行右移一个单元格;过程分解的效果图如图11所示。需要说明的是,图11省去了第三步的操作细节,但可以从前两步的操作效果过程中推出,不再赘述。

数据层面可概括为:设用户点击左侧把手,执行一行元素的左移操作,终端修改二维矩阵验证码,移动后判断当前活动对象的下一行位置是否存在障碍物,若不存在则活动对象继续向下移动(连带反应),并修改二维矩阵验证码,然后返回再次判断移动后的位置的下一行位置是否存在障碍物。若存在障碍物,则本次用户左侧操作的响应结束。

将用户操作行为以链表形式串联,为降低操作和验证的复杂度,链表长度由后台生成,其值为h*4。当用户在规定操作步数中未完成验证时,则重置。操作行为的结构体为hi_L/R,即第i行左侧把手或右侧把手。综上,图10所表述的三步过程链表表示如下:h1_L、h3_L、h4_R。

最后将最终得到的第一验证结果矩阵和操作行为返回给服务端进行验证。

第三部分:服务端验证码验证:

服务端拿到数据会解密处理,验证过程分两步:第一步检查第一验证结果矩阵的最后一行数组的值,是否有且只有一个2,即判断活动对象是否落入目标区域。若不落在,则返回验证失败,否则继续;第二步是前端操作的记忆复现,得到第二验证结果矩阵,比较第一验证结果矩阵和第二验证结果矩阵,一致则验证成功,否则返回验证失败。

向验证码中添加多层移动和交互操作,增加验证操作过程,增强被破解难度。将迷宫元素溶入验证码界面,并由交互操作改变迷宫元素,避免计算机的直接识别。

参见图12,提供一种实施例的验证码接收装置1200,可应用于终端,包括:

第一发送模块1201,用于向服务端发送验证码请求;

第一接收模块1202,用于接收服务端响应于验证码请求发送的二维矩阵验证码,其中,在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象。

在一个实施例中,验证码接收装置1200还包括:

网格生成模块,用于第一接收模块1202接收服务端响应于验证码请求发送的二维矩阵验证码之后,根据二维矩阵验证码,生成二维网格,二维网格的大小与二维矩阵验证码的大小相同

显示模块,用于显示验证界面;

其中,验证界面包括二维网格的中间子网格、活动对象、提示对象以及中间子网格对应的中间子矩阵关联的目标障碍物对象,活动对象位于中间子网格中的初始网格中,初始网格在二维网格中的位置与初始位置在二维矩阵验证码中的位置匹配,提示对象位于中间子网格中预设期望网格中,预设期望网格在二维网格中的位置与二维矩阵验证码中的预设期望位置匹配,一个障碍物位于中间子网格中的一个网格中,中间子网格的行数与二维网格的行数相同,且位于二维网格的第一子网格和第二子网格之间。

在一个实施例中,验证界面还包括分布于中间子网格的相对两侧的多个移动控件,一行网格对应两个移动控件,两个移动控件分布于行网格的相对两侧;

验证码接收装置1200还包括:

移动输入接收模块,用于显示模块执行显示验证界面之后,接收用户对验证界面中多个移动控件的至少部分移动控件有序的移动输入序列;

验证码调整模块,用于响应于移动输入序列,根据移动输入序列的移动方向以及至少部分移动控件的行标识,对二维矩阵验证码进行调整,得到第一验证结果矩阵;其中,参考行网格关联的对象按照参考移动方向移动单元网格,且参考行网格中活动对象按照参考移动方向移动单元网格后,活动对象所在的网格的下一行网格中与活动对象所在的网格同列的目标网格不存在障碍物的情况下,活动对象移动到目标网格,参考行网格为参考移动控件的行标识对应的行网格,参考移动方向为参考移动控件的移动输入的移动方向,参考移动控件为至少部分控件中的任一控件;

第二发送模块,用于向服务端发送第一验证结果矩阵、移动输入序列的移动方向以及至少部分移动控件的行标识。

在一个实施例中,验证码调整模块,包括:

第一调整单元,用于在接收到参考移动控件的移动输入的情况下,根据参考移动控件的移动输入的移动方向以及参考移动控件的行标识,对二维矩阵验证码进行调整,直到根据移动输入序列中每个移动输入的移动方向进行调整完毕,得到第一验证结果矩阵;

其中,根据参考移动控件的移动输入的移动方向以及参考移动控件的行标识,对二维矩阵验证码进行调整,包括以下至少一项:

在移动方向为第一方向的情况下,将二维矩阵验证码的参考行中第l列的值调整为第l+1列的值,参考行的最后一列的值通过第三预设值填充,并在活动对象的位置的下一行的与活动对象的位置同列的目标位置的值为第一值的情况下,将活动对象的位置的值调整为第一值,将活动对象关联到目标位置以及将目标位置的值调整为第二预设值,l大于或等于1,且小于二维矩阵验证码的列数,参考行为移动方向对应的行标识对应的行;

在移动方向为第二方向的情况下,将二维矩阵验证码的参考行中第l+1列的值调整为第l列的值,参考行的第1列的值通过第三预设值填充,并在活动对象的位置的下一行的与活动对象的位置同列的目标位置的值为第一值的情况下,将活动对象的位置的值调整为第一值,将活动对象关联到目标位置以及将目标位置的值调整为第二预设值。

上述验证码接收装置1200的技术特征与上述可应用于终端的验证码接收方法的中的技术特征对应,通过验证码接收装置1200实现上述验证码接收方法的各个过程,并能得到相同的效果,为避免重复,在此不再赘述。

参见图13,提供一种实施例的验证码生成装置1300,可应用于服务端,包括:

随机序列生成模块1301,用于在接收到终端发送的验证码请求的情况下,生成随机数序列;

路径生成模块1302,用于根据随机数序列以及活动对象在初始矩阵中的起始位置,生成活动对象到矩阵中预设期望位置的第一路径;

验证码生成模块1303,用于基于第一路径以及初始矩阵,生成二维矩阵验证码,其中,在二维矩阵验证码中,活动对象关联的初始位置对应的值与多个障碍物对象中任一障碍物对象关联的位置对应的值不同,多个障碍物关联的位置对应的值相同,且预设期望位置关联提示对象;

验证码发送模块1304,用于向终端发送二维矩阵验证码。

在一个实施例中,初始矩阵中各位置的值均为第一值,第一路径包括有序的且具有路径方向的M个路径分段,任一路径分段关联两个位置,M为正整数,

验证码生成模块1303,包括:

第二调整单元,用于按照M个路径方向以及M个路径分段,对初始矩阵中部分位置的值进行有序调整,得到二维矩阵验证码。

在一个实施例中,第二调整单元,包括:

第一调整子单元,用于对于M个路径方向中每个路径方向,根据路径方向,对初始矩阵的值进行目标调整,并根据路径方向的路径分段关联的位置,对活动对象的位置进行更新;

第二调整子单元,用于在根据M个路径方向对初始矩阵完成调整的情况下,得到二维矩阵验证码,并将活动对象的位置更新为起始位置;

其中,目标调整包括:

在路径方向为第一方向的情况下,根据活动对象的位置确定第一位置,将初始矩阵中第一位置的值调整为第一预设值,或者

在路径方向为第二方向的情况下,根据活动对象的位置确定第二位置,将初始矩阵中第二位置的值调整为第一预设值,或者

在路径方向为第三方向的情况下,根据活动对象的位置确定第三位置,将初始矩阵中第三位置的值调整为第一预设值;

其中,第三方向分别与第一方向以及第二方向垂直。

在一个实施例中,路径生成模块1302,包括:

取模处理模块,用于执行S1:根据第一预设数值,对随机数序列中第i个随机数进行取模处理,得到第i个余数,i的初始值为1,i小于或等于N,N为随机数序列中随机数总个数;

第一确定模块,用于执行S2:根据第i个余数,确定第i次移动方向;

第二确定模块,用于执行S3:在第i次移动方向与k个路径方向不相同,且第j-1个位置与预设期望位置不相同的情况下,将第i次移动方向确定为一个路径方向,根据第i次移动方向以及第j-1个位置,得到第j个位置,并将i增加1以及将j增加1;

重复执行S1-S2,直到活动对象的位置与预设期望位置相同,得到M个路径方向,j的初始值为1,j≤M,第0个位置为起始位置;

其中,k为正整数,k个路径方向为在确定第i次移动方向之前的确定顺序后k个路径方向。

在一个实施例中,验证码生成装置1300还包括:

第三调整模块,用于执行S4:在第i次移动方向与k个路径方向相同,且j-1个位置与预设期望位置不相同的情况下,将i增加1;

重复执行S1-S2,直到活动对象的位置与预设期望位置相同,得到M个路径方向。

在一个实施例中,验证码生成装置1300还包括:

第二接收模块,用于验证码发送模块1304执行向终端发送二维矩阵验证码之后,接收终端发送的第一验证结果矩阵、有序的移动输入序列的移动方向以及移动输入序列的行标识;

第四调整模块,用于在第一验证结果矩阵的预设行的值中只包括一个第二预设值的情况下,利用移动输入序列的移动方向以及移动输入序列的行标识,对初始二维矩阵验证码进行有序调整,得到第二验证结果矩阵,预设行与预设期望位置所在行相同;

第三发送模块,用于在第一验证结果与第二验证结果矩阵匹配的情况下,向终端发送第一提示,第一提示用于表示验证成功。

上述验证码生成装置1300的技术特征与上述可应用于服务端的验证码生成方法的中的技术特征对应,通过验证码生成装置1300实现上述验证码生成方法的各个过程,并能得到相同的效果,为避免重复,在此不再赘述。

本发明实施例还提供一种通信设备,包括处理器以及存储器,存储器上存储有可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述验证码生成方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述验证码生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

其中,的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。

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

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台通信设备(可以是手机,计算机,服务端,空调器,或者网络设备等)执行本发明各个实施例的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

相关技术
  • 一种桌面图标生成方法、计算机可读存储介质及终端设备
  • 一种电子问卷生成方法、计算机可读存储介质及终端设备
  • 一种安装包的生成方法、计算机可读存储介质及终端设备
  • 一种专线通信方法、计算机可读存储介质和终端设备
  • 通信设备、计算机可读存储介质和通信设备的控制方法
  • 一种验证码生成方法、终端及计算机可读存储介质
  • 一种RTE层通信数据映射配置文件的生成方法及系统、计算机可读存储介质、电子设备
技术分类

06120115616564