验证码图片生成方法及装置技术领域
本发明涉及互联网安全技术领域,尤其涉及一种验证码图片生成方法及装置。
背景技术
随着网络的普及,网站的运行性能和安全性问题也越来越突出。在互联网安全技术
领域,为防止有人利用机器人程序自动批量注册和登录网站、或者对特定的注册用户使
用特定程序以暴力破解方式不断登录,造成系统资源的严重耗费,威胁网站和用户信息
的安全,网站通常使用一种公共全自动模块来区分某一个请求背后是人还是机器人程序,
这类模块称为验证码,常以图片的形式呈现,呈现验证码的图片称之为验证码图片。
验证码图片通常根据随机产生的一串数字或符号生成,由用户肉眼识别图片中的数
字或符号,将数字或符号输入表单后提交给网站验证。但由数字或符号生成的验证码图
片容易被现在的机器人程序通过OCR(OpticalCharacterRecognition,光学字符识别)
技术将验证码(即数字或字符)识别出来。另一方面,一般验证码图片的生成方法是在
背景图中设置验证码区域,然后将随机生成的数字或符号填充于验证码区域中,为了加
大验证码图片被机器人程序识别的难度,通常会对数字或符号进行扭曲处理,以及在验
证码图片中加上噪声、纹理等干扰,降低数字和符号与图片背景的区别度,使机器人程
序难以直接提取到图片验证码中的数字或符号信息。但数字或符号的扭曲处理,及扭曲
处理之后在背景图片上对数字和符号的填充处理,这些过程往往复杂而且耗费资源,再
加上噪声和纹理处理,验证码图片生成的速度和效率会进一步降低,使得验证码不能快
速显示,用户往往需要刷新多次才能看到验证码图片;而且数字或符号扭曲后,以及验
证码图片添加噪声和纹理后,数字和符号显示不清晰,用户识别的难度加大,输入错误
次数增加,常需要多次点击更换验证码图片才能获得清晰可辨的验证码,用户体验不佳。
发明内容
为克服相关技术中验证码图片易被破解和生成效率低的问题,本申请提供一种验证
码图片生成方法及装置。
根据本申请实施例的第一方面,提供一种验证码图片生成方法,包括:
生成一个预设长度的数字;
获取所述数字每个数位的数值;
根据每个数位的数值分别在预先建立的算盘图片库中选取对应的算珠档图片,所述
算珠档图片中算珠所表示的数值与获取的所述数位的数值对应;
将选取的所述算珠档图片按预设顺序排列并拼接,生成验证码图片。
可选的,所述的验证码图片生成方法,还包括:
在预先建立的算盘图片库中随机选取预设个数表示整数0的算珠档图片;
将表示整数0的算珠档图片分组拼接在按预设顺序排列并拼接的算珠档图片的两
侧,生成验证码图片。
可选的,所述的验证码图片生成方法,还包括:
在预先建立的算盘图片库中随机选取右边框图片和左边框图片;
将右边框图片和左边框图片分别拼接在表示整数0的算珠档图片的最右侧和最左
侧,生成验证码图片。
可选的,所述将算珠档图片按预设顺序排列,为:将算珠档图片按对应的数位从大
到小的顺序从左到右排列,或者将算珠档图片按对应的数位从大到小的顺序从右到左排
列。
可选的,所述的验证码图片生成方法,还包括:
当所述数字为小数时,在预先建立的算盘图片库中随机选取小数点图片;
根据所述数字中小数点的位置,在按预设顺序排列的算珠档图片之间对应的位置插
入小数点图片;
将小数点图片与相邻两侧的算珠档图片拼接。
可选的,所述的图片验证码生成方法,还包括:对验证码图片进行加噪处理。
根据本申请实施例的第二方面,提供一种验证码图片生成装置,包括:
数字生成模块,用于生成一个预设长度的数字;
数位分解模块,用于获取所述数字每个数位的数值;
算珠档图片选取模块,用于根据每个数位的数值分别在预先建立的算盘图片库中选
取对应的算珠档图片,所述算珠档图片中算珠所表示的数值与数位的数值对应;
排列模块,用于将算珠档图片按预设顺序排列;
合成模块,用于拼接按预设顺序排列的算珠档图片,生成验证码图片。
可选的,所述的验证码图片生成装置,还包括:
零档图片选取模块,用于在预先建立的算盘图片库中随机选取预设个数表示整数0
的算珠档图片。
可选的,所述的验证码图片生成装置,还包括:
边框图片选取模块,用于在预先建立的算盘图片库中随机选取右边框图片和左边框
图片。
可选的,所述的验证码图片生成装置中,所述合成模块,还包括:
零档拼接子模块,用于将表示整数0的算珠档图片分组拼接在按预设顺序排列并拼
接的算珠档图片的两侧;
边框拼接子模块,用于将右边框图片和左边框图片分别拼接在表示整数0的算珠档
图片的最右侧和最左侧。
可选的,所述的验证码图片生成装置中,所述排列模块用于将算珠档图片按对应的
数位从大到小的顺序从左到右排列,或者将算珠档图片按对应的数位从大到小的顺序从
右到左排列。
可选的,所述的验证码图片生成装置,还包括:
小数点图片选取模块,在预先建立的算盘图片库中随机选取小数点图片;
小数点图片插入模块,用于根据所述数字中小数点的位置,在按预设顺序排列的算
珠档图片之间对应的位置插入小数点图片。
可选的,所述的验证码图片生成装置中,所述合成模块,还包括:
小数点图片拼接子模块,用于将小数点图片与相邻两侧的算珠档图片拼接。
可选的,所述的验证码图片生成装置,还包括:
加噪模块,用于对验证码图片进行加噪处理。
根据本申请实施例的第三方面,提供一种验证码输入方法,包括:
获取用户对交互式算盘图形的操作信息和在交互式算盘图形的操作坐标,所述操作
信息包括点击和拖动;
根据所述操作信息和操作坐标改变交互式算盘图形中区域块的值,所述区域块与沿
档杆排列的算珠元件和空位对应,大小相同,算珠元件填充于所述区域块中;
根据所有区域块的值得到对应的待验证数字。
可选的,所述的验证码输入方法中,所述区域块的值为0和1,当算珠元件填充于
所述区域块时,所述区域块的值为1,否则,所述区域块的值为0。
可选的,所述的验证码输入方法,其特征在于,所述根据所述操作信息和操作坐标
改变交互式算盘图形中区域块的值,包括:
判断操作信息为点击还是拖动;
当操作信息为点击时:
判断所述操作坐标是否在区域块的坐标范围内;
当所述操作坐标在区域块的坐标范围内时,判断所述区域块内是否填充有算珠元
件;
当所述区域块填充有算珠元件时,将所述算珠元件填充于相邻的对应于空位的区域
块中,将所述区域块的值和相邻的对应于空位的区域块的值取反,否则,保持所述区域
块的值和相邻的对应于空位的区域块的值;
当操作信息为拖动时:
判断拖动的起始操作坐标和终止操作坐标是否分别在两个相邻区域块的坐标范围
内;
当拖动的起始操作坐标和终止操作坐标分别在两个相邻区域块的坐标范围内时,判
断是否起始操作坐标所在的区域块内填充有算珠元件,且终止操作坐标所在的区域块内
为空位;
当起始操作坐标所在的区域块内填充有算珠元件,且终止操作坐标所在的区域块内
为空位时,将所述算珠元件填充于终止操作坐标所在的区域块中,分别将起始操作坐标
所在的区域块的值和终止操作坐标所在的区域块的值取反,否则,保持起始操作坐标所
在的区域块的值和终止操作坐标所在的区域块的值。
可选的,所述的验证码输入方法中,所述根据所有区域块的值得到对应的待验证数
字,包括:
将每列中每个区域块的标号和每个区域块的值相乘后相加得到每列对应的多项式;
根据每列的多项式查找预先建立的映射表,得到每列对应的整数,所述整数为0至
9;
根据每列对应的整数和每列对应的档杆排列的顺序,得到待验证的数字。
可选的,所述的验证码输入方法,在获取用户对交互式算盘图形的操作信息和在交
互式算盘图形的操作区域之前,还包括:当用户点击验证码输入窗口或者验证码输入图
标时,显示交互式算盘图形。
可选的,所述的验证码输入方法,还包括:将得到的待验证数字显示于验证码输入
显示窗口。
根据本申请实施例的第四方面,提供一种验证码输入装置,包括:
操作信息获取模块,用于获取用户对交互式算盘图形的操作信息,所述操作信息包
括点击和拖动;
操作坐标获取模块,用于获取用户对交互式算盘图形进行操作时在交互式算盘图形
的操作坐标;
区域块变值模块,用于根据所述操作信息和操作坐标改变交互式算盘图形中区域块
的值,所述区域块与沿档杆排列的算珠元件和空位对应,大小相同,算珠元件填充于所
述区域块中;
待验证数字获取模块,用于根据所有区域块的值得到对应的待验证数字。
其中,所述区域块的值为0和1,当算珠元件填充于所述区域块时,所述区域块的
值为1,否则,所述区域块的值为0。
可选的,所述区域块变值模块,包括:
操作判断子模块,用于判断操作信息为点击还是拖动;
点击操作范围判断子模块,用于当操作信息为点击时,判断点击操作的操作坐标是
否在区域块的坐标范围内;
点击操作填充判断子模块,用于当点击操作的操作坐标在区域块的坐标范围内时,
判断所述区域块内是否填充有算珠元件;
点击操作变值子模块,用于当点击操作的操作坐标在区域块的坐标范围内,且当所
述区域块填充有算珠元件时,将所述算珠元件填充于相邻的对应于空位的区域块中,将
所述区域块的值和相邻的对应于空位的区域块的值取反,否则,保持所述区域块的值和
相邻的对应于空位的区域块的值;
拖动操作范围判断子模块,用于判断拖动的起始操作坐标和终止操作坐标是否分别
在两个相邻区域块的坐标范围内;
拖动操作填充判断子模块,用于当拖动的起始操作坐标和终止操作坐标分别在两个
相邻区域块的坐标范围内时,判断是否起始操作坐标所在的区域块内填充有算珠元件,
且终止操作坐标所在的区域块内为空位;
拖动操作变值子模块,用于当起始操作坐标所在的区域块内填充有算珠元件,且终
止操作坐标所在的区域块内为空位时,将所述算珠元件填充于终止操作坐标所在的区域
块中,分别将起始操作坐标所在的区域块的值和终止操作坐标所在的区域块的值取反,
否则,保持起始操作坐标所在的区域块的值和终止操作坐标所在的区域块的值。
可选的,所述待验证数字获取模块,包括:
多项式计算子模块,用于将每列中每个区域块的标号和每个区域块的值相乘后相加
得到每列对应的多项式;
查找子模块,用于根据每列的多项式查找预先建立的映射表,得到每列对应的整数,
所述整数为0至9;
待验证数字组合子模块,用于根据每列对应的整数和每列对应的档杆排列的顺序,
得到待验证的数字。
可选的,所述的验证码输入装置,还包括:
交互式算盘图形显示模块,用于当用户点击验证码输入窗口或者验证码输入图标
时,显示交互式算盘图形。
可选的,所述的验证码输入装置,还包括:
待验证数字显示模块,用于将得到的待验证数字显示于验证码输入显示窗口。
本申请实施例提供的技术方案可以包括以下有益效果:使用算珠档图片替代数字或
符号来生成验证码图片,由于算珠档图片本身包含的内容非数字和符号,且其表示的数
值需要通过算盘表数方法的换算才能得到,因而可以有效地防止机器人程序使用OCR
技术识别验证码信息;同时,使用从算盘图片库中选取图片再将图片拼接的方式生成验
证码图片,过程简单且资源耗费少,可以有效地提高验证码图片生成的速度和效率,使
验证码图片可以快速显示,而且算珠档图片中的算珠较之扭曲或模糊化处理后的数字和
符号有更清晰可辨的视觉效果,从而有效提高用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能
限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有
技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而
言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为算珠档图片示例图。
图2为本申请一示例性实施例示出的一种验证码图片生成方法的流程示意图。
图3为算珠档图片按对应的数位从大到小的顺序从左到右排列的示例图。
图4为算珠档图片按对应的数位从大到小的顺序从右到左排列的示例图。
图5为本申请另一示例性实施例示出的一种验证码图片生成方法的流程示意图。
图6为图5所示方法生成的验证码图片的示例图。
图7为本申请一示例性实施例示出的一种验证码图片生成装置的框图。
图8为本申请另一示例性实施例示出的一种验证码图片生成装置的框图。
图9为本申请一示例性实施例示出的一种验证码输入方法的流程示意图。
图10为图8所示验证码输入方法中步骤S902的流程示意图。
图11为本申请一示例性实施例示出的一种验证码输入装置的框图。
图12为图11所示装置中区域块变值模块的框图。
图13为图11所示装置中待验证数字获取模块的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附
图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施
例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如
所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术
人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公
知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
在实施本申请前,预先建立算盘图片库,算盘图片库应当包括表示整数0至9的算
珠档图片组,每个整数对应一组算珠档图片。其中,算珠档指算盘中带有算珠的一档,
包括算珠、单个档杆和一段梁,依传统算盘的表数方法,梁上的每颗算珠(上珠)表示
数5,梁下的每颗算珠(下珠)表示数1,通常梁上两颗算珠,梁下五颗算珠,通过上珠
和下珠不同位置的组合来表示整数0至9。所述算珠档图片包括算珠、档杆和一段梁,
还可以包括一部分上边框和下边框。图1为算珠档图片示例图,图1中,从左至右,分
别表示整数0、整数5和整数9的算珠档图片,其他算珠档图片的形式以此类推,每张
算珠档图片包括算珠、档杆、一段梁、一部分上边框和一部分下边框。
算盘图片库还可以包括小数点图片组和算盘边框图片组,算盘边框图片组可以分为
右边框图片组和左边框图片组。每组图片中的图片可以有不同的颜色、纹理等,同时图
片可以有不同的宽度,但是最大宽度不超过一定的限值,例如,根据希望在界面或网页
显示的验证码图片的长度和希望显示的验证码图片的内容确定每个图片最大宽度的限
值。例如,每组有n个图片,算盘图片库可以以矩阵形式表示如下:
左边框:[L1,L2,L3......Ln];
整数0:[N01,N02,N03......N0n];
整数1:[N11,N12,N13......N1n];
整数2:[N21,N22,N23......N2n];
整数3:[N31,N32,N33......N3n];
整数4:[N41,N42,N43......N4n];
整数5:[N51,N52,N53......N5n];
整数6:[N61,N62,N63......N6n];
整数7:[N71,N72,N73......N7n];
整数8:[N81,N82,N83......N8n];
整数9:[N91,N92,N93......N9n];
右边框:[R1,R2,R3......Rn];
小数点:[D1,D2,D3......Dn]。
其中,方括号中的字母数字组合为每个图片的标号,例如N81,表示对应于数字8
的算珠档图片组中的一张算珠档图片,以此类推,标号也可以采用其他形式表示。每组
图片的个数也可以不相等。每组图片中图片标号的最后一位并不规定图片的顺序,仅用
于区别相同组中的其他图片。当需要某个图片时,根据图片表示的内容查找相应的图片
组,然后可以从图片组中随机选取所需的图片,例如,需要表示整数0的图片时,在整
数0对应的算珠档图片组中随机选取其中之一。完整的算盘则可以看作是左边框+算珠档
+右边框的组合,算珠档部分用以表示数字。增加算盘图片库中各组图片的数量和图片的
复杂度,使生成的验证码图片的可能性更多、图片复杂度更高,可以提高被破解性的难
度。
在本申请的第一方面,提供一种验证码图片生成方法。图2为本申请一示例性实施
例示出的一种验证码图片生成方法的流程示意图。预先建立算盘图片库后,如图2所示,
所述方法包括:
在步骤S201中,生成一个预设长度的数字;
其中,所述预设长度根据界面或网页显示验证码图片区域的长度,以及希望显示的
数位个数确定,且预设长度的数字对应的算珠档图片无缝拼接时的长度小于显示验证码
图片区域的长度。算珠档图片的宽度在预先建立算盘图片库时限定,例如,希望显示三
个或五个数字,则算盘图片库中算珠档图片的最大宽度不大于显示验证码图片区域的长
度的1/3或1/5。如果希望显示完整的算盘样式,即左边框+算珠档+右边框的样式,则在
显示验证码图片区域的长度中减去算盘图片库中左边框图片和右边框图片的最大宽度
后,再确定数字的预设长度。预设长度的数字可以随机生成,也可以循环使用数列中的
数字进行组合来生成,例如,循环使用斐波那契数列中的数字进行组合来生成,生成的
预设长度的数字的重复度越少,验证码的安全性越高。
预设长度也可以根据希望显示的数字长度和算盘样式确定,然后根据希望显示的数
字长度、算盘样式和算盘图片库中最大图片的宽度,设计界面或网页中显示验证码图片
区域的长度。所述预设长度不包括小数点。
在步骤S202中,获取所述数字每个数位的数值;
其中,数字的数位,即个位、十位、百位、千位等,当数字为小数时,还包括小数
位,即十分之一位、百分之一位等。每个数位的数值可以使用常规的计算方法得到,例
如,数字4321:千位的数值为4321/1000取整,结果为4;百位的数值为(4321-4*1000)
/100取整,结果为3,以此类推。当随机生成的数字为小数时,小数部分每个数位的数
值计算方法与上述方法类同,例如数字4321.12,则十分之一位的数值为0.12*10取整,
结果为1,百分之一位的数值为(0.12-1*0.1)*100取整,结果为2。
在步骤S203中,根据每个数位的数值分别在预先建立的算盘图片库中选取对应的
算珠档图片,所述算珠档图片中算珠所表示的数值与数位的数值对应;
其中,算珠档图片中算珠所表示的数值与数位的数值对应,可以为将算珠档图片中
算珠所表示的数值与数位的数值映射,例如构造算珠所表示的数值与数位的数值的映射
表,在得到每个数位的数值后,根据映射表找到每个数位的数值对应的算珠档图片中算
珠应当标示的数值,例如使用移位映射表,数位的数值为3时,对应表示的数值为4的
算珠档图片,数位的数值为4时,对应表示的数值为4的算珠档图片,以此类推,所述
映射表也可以为其他函数映射关系的映射表。使用映射表将算珠档图片中算珠所表示的
数值与数位的数值对应时,由于用户输入的验证码是依照验证码图片中显示的内容输入
的,因此在对用户输入的验证码进行验证时需要相应地对用户输入的数字进行反映射。
算珠档图片中算珠所表示的数值与数位的数值对应,优选为算珠档图片中算珠所表示的
数值与数位的数值相等,从而可以节省映射和反映射的环节,提高验证码生成和验证效
率,在本申请实施例中,在该优选方式下阐述本申请的原理和实施,其他对应方式不影
响本申请的原理,并且可以容易地通过该优选方式下本申请的实施类推出其他对应方式
下本申请的实施。
在得到每个数位的数值后,根据所述数值在算盘图片库中查找到对应的算珠档图片
组,然后在算珠档图片组中选取其中之一,例如,千位的数值为4,则在算盘图片库中
查找到整数4的算珠档图片组,然后在整数4的算珠档图片组中选取一个。所述选取可
以为随机选取,也可以为按算珠档图片的存储顺序依次选取,例如,整数4的算珠档图
片组中,图片按标号顺序存储,前一次选取的图片为N45,则当次选取图片N46,当一
组图片依次选取完之后,从该组中存储顺序为第一个的图片重新开始依次选取。
在步骤S204中,将算珠档图片按预设顺序排列并拼接,生成验证码图片。
其中,每个数位的数值对应的算珠档图片选取完毕后,将选取得到的算珠档图片按
预设顺序排列,并拼接起来,则可以生成验证码图片。所述按预设顺序排列,在一种可
能的实施方式中,按算珠档图片对应的数位从大到小的顺序从左到右排列,例如,数字
为4321,则按千位、百位、十位、个位的顺序将各数位的数值对应的算珠档图片从左到
右排列,即算珠档图片排列的顺序为:4对应的算珠档图片、3对应的算珠档图片、2对
应的算珠档图片、1对应的算珠档图片,如图3中示例所示。
在另一种可能的实施方式中,按算珠档图片对应的数位从大到小的顺序从右到左排
列,例如,数字为4321,则按千位、百位、十位、个位的顺序将各数位的数值对应的算
珠档图片从右到左排列,即算珠档图片排列的顺序为:1对应的算珠档图片、2对应的算
珠档图片、3对应的算珠档图片、4对应的算珠档图片,如图4中示例所示。在这种实施
方式中,算珠档图片排列的顺序与数字中各数位数值的排列顺序相反,相应地,在验证
码图片显示区域的附近区域,或者在验证码输入框附近的区域以文字提示用户输入与验
证码图片所表示的各个数值排列顺序相反的数字。由于对用户输入的数字进行验证时,
时将输入的数字与随机生成的数字进行比对验证,而验证码图片显示的数字与随机生成
的数字在数位数值上顺序相反,因此可以进一步防止机器人软件通过获取验证码图片中
的验证码信息后利用所述验证码信息进行登录,增加网站在账号和登录管理上的安全性。
在将算珠档图片按预设顺序排列后,拼接所述算珠档图片,生成验证码图片。所述
拼接可以使用常规的图片拼接方法,优选为无缝拼接,所述无缝拼接为去掉图片中的边
距,。
上述步骤S203中,当随机生成的数字为小数(非整数)时,还包括在预先建立的
算盘图片库中随机选取小数点图片。相应地,当随机生成的数字为小数(非整数)时,
上述步骤S204中,在将算珠档图片按预设顺序排列后,还包括根据所述数字中小数点的
位置,在按预设顺序排列的算珠档图片之间对应的位置插入小数点图片,并将小数点图
片与相邻两侧的算珠档图片拼接。对小数点图片而言,所述在按预设顺序排列的算珠档
图片之间对应的位置,可以根据小数点两侧的数值和两侧的数位的个数确定,例如,数
字为4321.12,则将小数点图片插入至两个整数1的算珠档图片之间;数字为222.22,根
据小数点两侧的数值不能判断小数点的位置时,根据数字中小数点两侧数位的个数,即
左边三个数位且右边两个数位进行判断,此时,如果算珠档图片是按对应的数位从大到
小的顺序从左到右排列,则以左边三个算珠档图片且右边两个算珠档图片的判断条件确
定小数点图片的位置,如果算珠档图片是按对应的数位从大到小的顺序从右到左排列,
则相应地以右边三个算珠档图片且左边两个算珠档图片的判断条件确定小数点图片的位
置;数字为对称态,如333.333,则同理可以根据数字中小数点两侧数位的个数来确定小
数点图片的位置。
在确定小数点图片在按预设顺序排列的算珠档图片之间对应的位置后,将小数点图
片插入所述对应的位置,并将小数点图片与相邻两侧的算珠档图片拼接,所述拼接优选
为无缝拼接。
图5为本申请一示例性实施例示出的一种验证码图片生成方法的流程示意图。预先
建立算盘图片库后,如图5所示,所述方法包括:
在步骤S501中,生成一个预设长度的数字;
在步骤S502中,获取所述数字每个数位的数值;
在步骤S503中,根据每个数位的数值分别在预先建立的算盘图片库中选取对应的
算珠档图片,所述算珠档图片中算珠所表示的数值与数位的数值相等;
其中步骤S501、步骤S502和步骤S503与图1所示实施例中的步骤S101、步骤S102
和步骤S103相同。
在步骤S504中,在预先建立的算盘图片库中随机选取右边框图片和左边框图片,
并在预先建立的算盘图片库中随机选取预设个数表示整数0的算珠档图片;
其中,在算盘图片库的右边框图片组和左边框图片组中分别随机选取右边框图片和
左边框图片,并在算盘图片库整数0对应的算珠档图片组中随机选取预设个数表示整数
0的算珠档图片。所述预设个数根据步骤S501中随机生成的数字的预设长度、界面或网
页显示验证码图片区域的长度、右边框图片和左边框图片的最大宽度以及整数0的算珠
档图片的最大宽度确定,例如,界面或网页显示验证码图片区域的长度减去右边框图片
和左边看图片的最大宽度,以及减去预设长度的数字对应的算珠档图片拼接后可能的最
大宽度后,剩余的长度除以算盘图片库中表示整数0的算珠档图片的最大宽度,所得的
商取整,则可以得到预设个数的最大值。由于小数点图片的宽度可以规定得很小,即使
步骤S501生成的为小数,也可以忽略小数点图片对预设个数的影响。所述预设个数也可
以根据希望验证码图片显示的算盘样式确定,例如除去表示数字的算珠档部分,以及左
边框和右边框后,希望显示的空档(即算珠表示的数值为0的档)的个数。所述预设个
数可以为固定值,即每次选取的表示整数0的算珠档图片个数都相同,所述预设个数也
可以为动态值,即每次选取的表示整数0的算珠档图片个数不同,但每次选取的个数都
不超过预设个数的最大值。当预设个数为动态值时,所述预设个数可以根据每次其他算
珠档图片的宽度、右边框图片的宽度和左边框图片的宽度动态调整,使验证码图片占满
显示验证码图片的区域,所述预设个数也可以在几个值之间循环选择,例如在1、2、3、
4之间循环选择,或者在小于预设个数的最大值的范围内随机选择一个整数。
在步骤S505中,将算珠档图片按预设顺序排列;
所述步骤S505与图1所示实施例的步骤S104中将算珠档图片按预设顺序排列的方
法相同。
在步骤S506中,判断步骤S501生成的是否为小数,当生成的为整数(非小数)时,
跳转至步骤S5010,当生成的为小数时,顺序执行步骤S507;
在步骤S507中,当步骤S501随机生成的数字为小数时,在预先建立的算盘图片库
中随机选取小数点图片;
在步骤S508中,根据所述数字中小数点的位置,在按预设顺序排列的算珠档图片
之间对应的位置插入小数点图片;
其中,所述在按预设顺序排列的算珠档图片之间对应的位置,可以根据小数点两侧
的数值和两侧的数位的个数确定。
在步骤S509中,将按预设顺序排列的算珠档图片拼接,并将小数点图片与相邻两
侧的算珠档图片拼接;
其中,可以先将算珠档图片拼接,再将小数点图片与相邻两侧的算珠档图片拼接,
也可以算珠档图片的拼接、小数点图片与相邻两侧的算珠档图片的拼接同时进行。
在步骤S5010中,将表示整数0的算珠档图片分组拼接在按预设顺序排列并拼接的
算珠档图片的两侧,并将右边框图片和左边框图片分别拼接在表示整数0的算珠档图片
的最右侧和最左侧;
其中,步骤S5010将算珠档图片按预设顺序排列并拼接后,将表示整数0的算珠档
图片分组拼接在已拼接的算珠档图片的两侧,并将右边框图片和左边框图片分别拼接在
表示整数0的算珠档图片的最右侧和最左侧;在一种可能的实施方式中,上述各个拼接
同时进行。表示整数0的算珠档图片为多个时,即预设个数大于1时,可以将表示整数
0的算珠档图片拼接在按预设顺序排列并拼接的算珠档图片的一侧,为使验证码图片更
美观,较优的是将表示整数0的算珠档图片分组拼接在按预设顺序排列并拼接的算珠档
图片的两侧,所述分组可以随机分组,优选的是所述预设个数为偶数,将表示整数0的
算珠档图片分为对称的两组并对称地拼接在按预设顺序排列并拼接的算珠档图片的两
侧。验证码图片中加入表示整数0的算珠档图片,不仅使验证码图片显示的内容更接近
实际算盘的样子,及使验证码图片更美观,更重要的是,加入表示整数0的算珠档图片,
由于同样表示的是数值,可以进一步干扰机器人程序对验证码的识别,特别是当选取表
示整数0的算珠档图片的预设个数为动态值时,对机器人程序的干扰更大,使机器人程
序难以分辨出哪些数值表达属于真正的验证码,从而进一步增加验证码图片被破解的难
度。
步骤S509和步骤S5010中的拼接皆可以使用常规的图片拼接方法,优选为无缝拼
接。
在步骤S5011中,生成验证码图片。
算珠档图片、左边框图片和右边框图片拼接完毕后,或者算珠档图片、右边框图片、
左边框图片和小数点图片拼接完毕后,得到验证码图片,即生成验证码图片。
图5所示的实施例,以随机生成的数字为321.12、预设个数为4、算珠档图片按对
应的数位从大到小的顺序从左到右排列为例,生成的验证码图片可以如图6中示例所示。
本申请实施例所述的图片验证码生成方法,在一种可能的实施方式中,还可以包括:
对验证码图片进行加噪处理,例如,在验证码图片中加入高斯噪声,进一步增加机器人
程序识别验证码的难度。所述加噪处理还可以使用其他常规的图片噪声处理方法。
需要说明的是,通常设计界面或网页时都会使验证码图片显示区域有足够的高度显
示完整的验证码图片,在预先建立算盘图片库时,所存储的图片的高度皆不超过验证码
图片显示区域的高度,因此,本申请中,验证码图片的高度不影响验证码图片内容的显
示,故不赘述。
本申请所提供的验证码图片生成方法,在一种可能的实施方式中,可以将同一个完
整的算盘图片按单个算珠档、左边框、右边框分割后,对分割的图片的颜色、纹理进行
处理,即每个图片的颜色、纹理不同,然后由分割的图片建立算盘图片库,同时所选取
的图片,包括算珠档图片、左边框图片、右边框图片和小数点图片,在拼接时,优选为
无缝拼接,且图片之间彼此不交错,从而使验证码图片显示为边缘配合平整的算盘的一
部分或者完整的算盘。本申请所提供的验证码图片生成方法,在另一种可能的实施方式
中,也可以不使用将同一个完整的算盘图片分割后进行处理,获得建立算盘图片库的图
片的方式,而是选取样式不同的图片,例如,对不同样式的完整的算盘图片进行分割,
将分割得到的图片进行颜色、纹理处理后,由分割的图片建立算盘图片库,在拼接时,
所选取的图片之间可以有交错和间隙,所选取的图片的样式、所选取的图片之间的交错
和间隙不影响用户对验证码图片内容的识别,但拼接过程较无缝拼接过程简单,可以增
加拼接处理的速度,提高验证码图片生成的效率。
本申请所提供的验证码图片生成方法,在一种可能的实施方式中,可以先选取背景
图片,然后在背景图片上设置验证码区域,再从算盘图片库中选取算珠档图片填充在背
景图片的验证码区域,生成验证码图片。
本申请所提供的验证码图片生成方法,使用算珠档图片替代易被机器人程序识别的
数字或符号来生成验证码图片,且算珠档图片表示的数值需要进行算盘表数方法的换算
才能得到,因而可以有效地防止机器人程序使用OCR技术识别验证码信息;而且本申
请所提供的验证码图片生成方法,根据生成的随机数,从算盘图片库中选取对应的图片,
再将图片拼接生成验证码图片,过程简单、资源耗费少,因而可以有效地提高验证码图
片生成的速度和效率,使验证码图片可以在界面或网页中快速显示,而且算珠档图片中
的算珠较之扭曲的数字和符号有更清晰可辨的视觉效果,从而使用户更易识别验证码信
息,提高用户体验。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借
助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者
是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出
贡献的部分可以以软件产品的形式体现出来,并存储在一个存储介质中,包括若干指令
用以使得一台智能设备执行本发明各个实施例所述方法的全部或部分步骤。而前述的存
储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可
以存储数据和程序代码的介质。
与本申请的第一方面相应,在本申请的第二方面,提供一种验证码图片生成装置。
图7为本申请一示例性实施例示出的一种验证码图片生成装置的框图。如图7所示,所
述装置可以包括:
数字生成模块U701,用于生成一个预设长度的数字;
数位分解模块U702,与U701连接,用于获取所述数字每个数位的数值;
算珠档图片选取模块U703,与U702连接,用于根据每个数位的数值分别在预先建
立的算盘图片库中选取对应的算珠档图片,所述算珠档图片中算珠所表示的数值与数位
的数值对应;
排列模块U704,与U703连接,用于将算珠档图片按预设顺序排列;
合成模块U705,与U704连接,用于拼接按预设顺序排列的算珠档图片,生成验证
码图片。
其中,所述排列模块U704用于将算珠档图片按对应的数位从大到小的顺序从左到
右排列,或者将算珠档图片按对应的数位从大到小的顺序从右到左排列。
图8为本申请另一示例性实施例示出的一种验证码图片生成装置的框图。如图8所
示,所述装置可以包括:
数字生成模块U801,用于生成一个预设长度的数字;
数位分解模块U802,与U801连接,用于获取所述数字每个数位的数值;
算珠档图片选取模块U803,与U802连接,用于根据每个数位的数值分别在预先建
立的算盘图片库中选取对应的算珠档图片,所述算珠档图片中算珠所表示的数值与数位
的数值对应;
小数点图片选取模块U804,与U801连接,用于在预先建立的算盘图片库中随机选
取小数点图片;
排列模块U805,与U803连接,用于将算珠档图片按预设顺序排列;
小数点图片插入模块U806,与U801、U804和U805连接,用于根据所述数字中小
数点的位置,在按预设顺序排列的算珠档图片之间对应的位置插入小数点图片。
零档图片选取模块U807,用于在预先建立的算盘图片库中随机选取预设个数表示
整数0的算珠档图片。
边框图片选取模块U808,用于在预先建立的算盘图片库中随机选取右边框图片和
左边框图片。
合成模块U809,与U805、U806、U807和U808连接,用于拼接按预设顺序排列的
算珠档图片,生成验证码图片。
其中,小数点图片选取模块U804与U801连接,当U801随机生成的为小数时,小
虎点图片选取模块启动,在预先建立的算盘图片库中随机选取小数点图片。
其中,小数点图片插入模块U806,与U801、U804和U805连接,用于根据U801
随机生成的数字中小数点的位置,在U805按预设顺序排列的算珠档图片之间对应的位
置插入U804选取的小数点图片。
其中,所述排列模块U805用于将算珠档图片按对应的数位从大到小的顺序从左到
右排列,或者将算珠档图片按对应的数位从大到小的顺序从右到左排列。
其中,所述合成模块,包括:
算珠档图片拼接模块,用于拼接按预设顺序排列的算珠档图片;
零档拼接子模块,用于将表示整数0的算珠档图片分组拼接在按预设顺序排列并拼
接的算珠档图片的两侧;
边框拼接子模块,用于将右边框图片和左边框图片分别拼接在表示整数0的算珠档
图片的最右侧和最左侧。
小数点图片拼接子模块,用于将小数点图片与相邻两侧的算珠档图片拼接。
本申请实施例所述的验证码图片生成装置,在一种可能的实施方式中,还包括:
加噪模块,用于对验证码图片进行加噪处理。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本
申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分
互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置
实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法
实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作
为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以
是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。
可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域
普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本申请的第三方面,提供一种验证码输入方法。图9为本申请一示例性实施例示
出的一种验证码输入方法的流程示意图。如图9所示,所述方法包括:
在步骤S901中,获取用户对交互式算盘图形的操作信息和在交互式算盘图形的操
作坐标,所述操作信息包括点击和拖动;
其中,所述交互式算盘图形预先建立,在界面或网页的验证码输入区域显示,供用
户操作以输入验证码,或者预先隐藏,当用户点击验证码输入窗口或者验证码输入图标
时,显示于验证码输入窗口中,或者以弹出窗口的方式显示。交互式算盘图像以弹出窗
口的方式可以节约界面或网页的显示空间,由于通常验证码输入窗口或者输入区域较小,
使用弹出窗口的方式可以显示较大的算盘图形,方便用户的操作。
所述交互式算盘图形可以为flash动画,其显示内容为传统的算盘。建立交互式算
盘图形时,根据图形大小建立图形的坐标系统。当用户对交互式算盘图形进行操作时,
例如点击或拖动图形中的算珠时,交互式算盘图形获取鼠标设备的对应动作信息,从而
得到用户的操作信息,并相应地获取在图形的坐标系统中该操作发生位置的坐标,当终
端为触屏式移动终端时,可以通过触摸和手势信息来获得操作信息。交互式算盘图形获
取操作信息和操作坐标可以与常规交互式图形获取操作信息和操作坐标的方法相同。
需要说明的是,本申请交互式算盘图形显示的传统算盘样式中,每个档杆在梁上串
2个上珠、留一个空位,在梁下串5个下珠、留一个空位,空位的高度不小于一颗算珠
的高度,空位的大小以容纳一颗算珠为限。
在步骤S902中,根据操作信息和操作坐标改变交互式算盘图形中区域块的值,所
述区域块与沿档杆排列的算珠元件和空位对应,大小相同,算珠元件填充于所述区域块
中;
在步骤S903中,根据所有区域块的值得到对应的待验证数字。
其中,在建立交互式算盘图形时,构造区域块,所述区域块设置于梁与下边框以及
梁与上边框的范围内,沿档杆排列,且大小相同,图形中的算珠元件填充于所述区域块
中。同时在建立交互式算盘图形时,只有算珠设置为可操作,算盘的梁、边框和档杆皆
设置为不可操作,当用户点击算盘的梁、边框、档杆和空白处时,不获取相应的操作信
息和操作坐标。
其中,在一种可能的实施方式中,所述区域块的值为0和1,当算珠元件填充于所
述区域块时,所述区域块的值为1,否则,所述区域块的值为0。则获取用户对交互式算
盘操作信息和在交互式算盘图形上的操作坐标后,步骤S902中,所述根据操作信息和操
作坐标改变交互式算盘图形中区域块的值,如图10所示,包括:
在步骤S1001中,判断操作信息为点击操作还是拖动操作;
其中,可以通过获取鼠标的动作信息来判断操作信息为点击还是拖动,当在触屏式
移动终端上进行操作时,可以通过触摸信息和手势信息来判断操作信息为点击还是拖动,
移动终端操作中带方向的滑动手势可看作是点击。
当操作信息为点击操作时,执行如下步骤:
步骤S1021,判断所述操作坐标是否在区域块的坐标范围内;
步骤S1022,当所述操作坐标在区域块的坐标范围内时,判断所述区域块内是否填
充有算珠元件;
步骤S1023,当所述区域块填充有算珠元件时,将算珠元件填充于相邻的对应于空
位的区域块中,将所述区域块的值和相邻的对应于空位的区域块的值取反,否则,保持
所述区域块的值和相邻的对应于空位的区域块的值;
其中,各个区域块的坐标在建立交互式算盘图形时设置,当操作信息为点击时,在
交互式算盘图形中点击的位置的坐标即操作坐标。判断操作坐标是否在某个区域块的坐
标范围内,当操作坐标在某个区域块的范围内时,如果所述区域块内填充有算珠元件,
则操作是对算珠进行的。交互式算盘图形中只有算珠可操作,当点击算珠时,将算珠移
至相邻的空位,相当于手动打算盘时将算珠拨至空位,此时,原本填充有算珠元件的区
域变为空位,而算珠元件填充至相邻的空位,因此对原本填充有算珠元件的区域块的值
和其相邻的对应于原本的空位的区域块的值取反,使原本填充有算珠元件的区域块的值
由1变为0,而对应于原本的空位的区域块的值由0变为1。
其中,当操作坐标不在任何区域块的坐标范围内,或者,当操作坐标在区域块的坐
标范围内时,但所述区域块内没有填充算珠元件时,保持算珠元件不动,并保持所述区
域块的值和相邻的对应于空位的区域块的值,即当用户操作的不是算珠时,保持算珠元
件不动,也不改变任何区域块的值。
当操作信息为拖动操作时,执行如下步骤:
步骤S1031,判断拖动操作的起始操作坐标和终止操作坐标是否分别在两个相邻区
域块的坐标范围内;
步骤S1032,当拖动操作的起始操作坐标和终止操作坐标分别在两个相邻区域块的
坐标范围内时,判断是否起始操作坐标所在的区域块内填充有算珠元件,且终止操作坐
标所在的区域块内为空位;
步骤S1033,当起始操作坐标所在的区域块内填充有算珠元件,且终止操作坐标所
在的区域块内为空位时,将所述算珠元件填充于终止操作坐标所在的区域块中,并分别
将起始操作坐标所在的区域块的值和终止操作坐标所在的区域块的值取反,否则,保持
起始操作坐标所在的区域块的值和终止操作坐标所在的区域块的值;
其中,拖动操作为在图中一个位置按下鼠标右键后一直按住鼠标右键至目标位置放
开,当终端为触屏式移动终端时,为手指从图中一个位置滑至目标位置后放开手指。通
过获取鼠标的动作信息或者手势信息,可以获得拖动操作的起始操作坐标和终止操作坐
标。获得拖动操作的起始操作坐标和终止操作坐标后,判断拖动操作的起始操作坐标和
终止操作坐标是否分别在两个相邻区域块的坐标范围内,可以通过判断起始操作坐标所
在的区域块和终止操作坐标所在的区域块是否相邻来进行,因为交互式算盘图形与传统
算盘类同,对算珠的操作,只能为在相邻位置有空位时,移动至空位,当拖动操作的起
始操作坐标和终止操作坐标不在两个相邻区域块的坐标范围内时,拖动算珠失败,不执
行后续的步骤。
当拖动操作的起始操作坐标和终止操作坐标分别在两个相邻区域块的坐标范围内
时,判断起始操作坐标所在的区域块内和终止操作坐标所在的区域块内是否填充有算珠
元件。当起始操作坐标所在的区域块内和终止操作坐标所在的区域块内都填充有算珠元
件时,拖动算珠失败,不执行后续步骤。当起始操作坐标所在的区域块内没有填充算珠
元件时,由于拖动操作对象非算珠,拖动操作失败,不执行后续步骤。
当起始操作坐标所在的区域块内填充有算珠元件,且终止操作坐标所在的区域块内
为空位时,将起始操作坐标所在的区域块内填充的算珠元件移至终止操作坐标所在的区
域块中,并分别将起始操作坐标所在的区域块的值和终止操作坐标所在的区域块的值取
反,使起始操作坐标所在的区域块的值由1变为0,终止操作坐标所在的区域块的值由0
变为1。
对步骤S902而言,在另一种可能的实施方式中,可以当算珠元件填充于区域块时
区域块的值,和算珠元件未填充于区域块时区域块的值分别设置为非二进制的值,例如,
根据区域块排列的位置,为每个区域块预先分配不同的值,且仅当算珠元件填充于区域
块时,所述区域块的值等于预先分配给该区域块的值,当算珠元件未填充于区域块时,
所述区域块的值为0。获取用户对交互式算盘操作信息和在交互式算盘图形上的操作坐
标后,所述根据操作信息和操作坐标改变交互式算盘图形中区域块的值,与前述图9所
示过程的不同之处在于,在改变区域块的值时,不是将区域块的值取反,而是当算珠元
件填充于区域块时,所述区域块的值设置为预先分配给该区域块的值,当算珠元件未填
充于区域块时,所述区域块的值设置为0。
当所有操作结束时,即用户在交互式算盘图形上操作完毕,提交操作结果时,执行
步骤S803,根据所有区域块的值得到对应的待验证数字。在一种可能的实施方式中,所
述根据所有区域块的值得到对应的待验证数字,可以包括:
将每列中每个区域块的标号和每个区域块的值相乘后相加得到每列对应的多项式;
根据每列的多项式查找预先建立的映射表,得到每列对应的整数,所述整数为0至
9;
根据每列对应的整数和每列对应的档杆排列的顺序,得到待验证的数字。
其中,所述列为区域块列。在建立交互式算盘图形时,为每个区域块分配标号,所
述标号为字符。以一列区域块为例,梁上三个区域块(对应于两个上珠和一个空位)从
上至下的标号为b3、b2和b1,梁下六个区域块(对应于五个下珠和一个空位)从上至
下标号为a1、a2、a3、a4、a5和a6。在区域块的值为1和0的情况下,即当算珠元件
填充于所述区域块时,所述区域块的值为1,否则,所述区域块的值为0时,当b1和a1
区域块对应空位时,所述列对应的多项式为b3+b2+a2+a3+a4+a5+a6,在预先建立的映
射表中,将b3+b2+a2+a3+a4+a5+a6与整数0对应。再得到某列的多项式为
b3+b2+a2+a3+a4+a5+a6后,根据预先建立的映射表可以得到该列对应的整数为0。由此
可类推至所有列的区域块。
在区域块的值为1和0的情况下,即当算珠元件填充于所述区域块时,所述区域块
的值为1,否则,所述区域块的值为0时,在另一种可能的实施方式中,将每列中每个
区域块的标号和每个区域块的值相乘后构成行列式,例如梁上三个区域块(对应于两个
上珠和一个空位)从上至下的标号为b3、b2和b1,梁下六个区域块(对应于五个下珠
和一个空位)从上至下标号为a1、a2、a3、a4、a5和a6,当b1和a1区域块对应空位
时,则该列对应的行列式为[b3b2a2a3a4a5a6]。在预先建立的映射表中,将行列式[b3
b2a2a3a4a5a6]与整数0对应。再得到某列的多项式为[b3b2a2a3a4a5a6]后,根据
预先建立的映射表可以得到该列对应的整数为0。由此可类推至所有列的区域块。
在根据预先建立的映射表得到每列对应的整数后,按每列对应的档杆排列的顺序排
列,例如从左至右,和每个档杆对应的区域块列所对应的整数依次为4、3、2、1,则可
得到用户通过交互式算盘图形输入的待验证数字为4321。
当根据区域块排列的位置,为每个区域块预先分配不同的值,且仅当算珠元件填充
于区域块时,所述区域块的值等于预先分配给该区域块的值,当算珠元件未填充于区域
块时,所述区域块的值为0时,所述根据所有区域块的值得到对应的待验证数字,可以
包括:
将每列中每个区域块的值相加得到每列对应的和值;
根据每列对应的和值查找预先建立的映射表,得到每列对应的整数,所述整数为0
至9;
根据每列对应的整数和每列对应的档杆排列的顺序,得到待验证的数字。
例如,梁上三个区域块从上至下预先分配的值依次为0、10、5,梁下六个区域块从
上至下预先分配的值依次为1、2、3、4、5和0。以一列区域块为例,当与梁相邻的上
下两个区域块对应空位时,即梁上三个区域块中最下面的区域块和梁下六个区域块最上
面的区域块对应空位时,该列每个区域块的值相加,即0+10+0+0+2+3+4+5+0,得到的
和值为24,在预先建立的映射表中,和值24对应整数0。由此可类推至所有列的区域块。
使用区域块的和值来和整数0-9对应,建立映射表,并基于映射表来根据所有区域块的
值得到对应的待验证数字,相比前述使用多项式或行列式来与整数0-9对应的方式,映
射表更简洁,映射处理的效率的更高。
本申请实施例所述的验证码输入方法,在一种可能的实施方式中,还包括:将得到
的待验证数字显示于验证码输入显示窗口。
将用户通过交互式算盘图形输入的待验证数字同时显示于验证码输入显示窗口,可
以方便用户检查在交互式算盘图形上的操作是否错误。
与本申请的第三方面相应,在本申请的第四方面,提供一种验证码输入装置。图11
为本申请一示例性实施例示出的一种验证码输入装置的框图。如图11所示,所述装置可
以包括:
操作信息获取模块U1101,用于获取用户对交互式算盘图形的操作信息,所述操作
信息包括点击和拖动;
操作坐标获取模块U1102,与U1101连接,用于获取用户对交互式算盘图形进行操
作时在交互式算盘图形的操作坐标;
区域块变值模块U1103,与U1102和U1101连接,用于根据所述操作信息和操作坐
标改变交互式算盘图形中区域块的值,所述区域块与沿档杆排列的算珠元件和空位对应,
大小相同,算珠元件填充于所述区域块中;
待验证数字获取模块U1104,与U1103连接,用于根据所有区域块的值得到对应的
待验证数字。
其中,所述区域块的值为0和1,当算珠元件填充于所述区域块时,所述区域块的
值为1,否则,所述区域块的值为0。
图12为图11所示装置中区域块变值模块的框图。如图12所示,在一种可能的实
施方式中,所示区域块变值模块可以包括:
操作判断子模块U1201,用于判断操作信息为点击还是拖动;
点击操作范围判断子模块U1202,与U1201连接,用于当操作信息为点击时,判断
点击操作的操作坐标是否在区域块的坐标范围内;
点击操作填充判断子模块U1203,与U1202连接,用于当点击操作的操作坐标在区
域块的坐标范围内时,判断所述区域块内是否填充有算珠元件;
点击操作变值子模块U1204,与U1203连接,用于当点击操作的操作坐标在区域块
的坐标范围内,且当所述区域块填充有算珠元件时,将所述算珠元件填充于相邻的对应
于空位的区域块中,将所述区域块的值和相邻的对应于空位的区域块的值取反,否则,
保持所述区域块的值和相邻的对应于空位的区域块的值;
拖动操作范围判断子模块U1205,与U1201连接,用于判断拖动的起始操作坐标和
终止操作坐标是否分别在两个相邻区域块的坐标范围内;
拖动操作填充判断子模块U1206,与U1205连接,用于当拖动的起始操作坐标和终
止操作坐标分别在两个相邻区域块的坐标范围内时,判断是否起始操作坐标所在的区域
块内填充有算珠元件,且终止操作坐标所在的区域块内为空位;
拖动操作变值子模块U1207,与U1206连接,用于当起始操作坐标所在的区域块内
填充有算珠元件,且终止操作坐标所在的区域块内为空位时,将所述算珠元件填充于终
止操作坐标所在的区域块中,分别将起始操作坐标所在的区域块的值和终止操作坐标所
在的区域块的值取反,否则,保持起始操作坐标所在的区域块的值和终止操作坐标所在
的区域块的值。
图13为图11所示装置中待验证数字获取模块的框图。如图13所示,在一种可能
的实施方式中,所示区域块变值模块可以包括:
多项式计算子模块U1301,用于将每列中每个区域块的标号和每个区域块的值相乘
后相加得到每列对应的多项式;
查找子模块U1302,与U1301连接,用于根据每列的多项式查找预先建立的映射表,
得到每列对应的整数,所述整数为0至9;
待验证数字组合子模块U1303,与U1302连接,用于根据每列对应的整数和每列对
应的档杆排列的顺序,得到待验证的数字。
在一种可能的实施方式中,所述的验证码输入装置,还可以包括:
交互式算盘图形显示模块,用于当用户点击验证码输入窗口或者验证码输入图标
时,显示交互式算盘图形。
在一种可能的实施方式中,所述的验证码输入装置,还可以包括:
待验证数字显示模块,用于将得到的待验证数字显示于验证码输入显示窗口。
本申请实施例提供的验证码输入方法,使用交互式算盘图形来输入验证码,由于需
要通过对交互式算盘图形的操作来输入,而非直接输入数字,且在交互式算盘图形接收
用户的操作后,需通过判断、映射等过程来确定用户输入的数字,从而可以防止机器人
软件以在验证码输入区域自动填充数字的方式来批量注册或登陆,并且提高机器人软件
破解验证码输入过程的难度,增强网站系统安全性。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将
一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操
作之间存在任何这种实际的关系或者逆序。而且,术语“包括”、“包含”或者其任何其
他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者设
备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、
方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”
限定的要素,并不排除在包括所述要素的过程、方法、装置或者设备中还存在另外的相
同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。
对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一
般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申
请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点
相一致的最宽的范围。