基于字符旋转检测的验证码验证方法和装置与流程

文档序号:11215752阅读:455来源:国知局
基于字符旋转检测的验证码验证方法和装置与流程

本公开一般涉及信息安全领域,具体验证码技术,尤其涉及一种基于字符旋转检测的验证码验证方法和装置。



背景技术:

在互联网网站登录时,常常要求用户按照页面上显示的验证码在指定区域输入该显示的验证码。如果用户输入的与页面上显示的一致,则验证码验证通过。验证码的意义在于:它可以区分是人在正常访问页面,还是计算机的攻击行为。因为人看到页面上显示的验证码,可以很容易在指定区域填写该验证码,但机器去做则会有一些难度,这样,如果恶意用户想要频繁登录、刷票、灌水等,则每做一次需要识别显示的验证码并进行填写,提高了恶意用户频繁攻击的难度。

但是,虽然有了验证码后,恶意用户频繁攻击网站比较困难,但借助于目前已经很成熟的ocr技术,还是很容易将网站上显示的验证码进行ocr识别,将识别结果填写在指定区域,正确比例也是比较高的。

因此,需要一种进一步使恶意用户更难于借助机器识别出显示的验证码从而填写正确的验证码导致验证通过、进一步降低恶意用户验证通过的难度的方案。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种进一步降低恶意用户验证码验证通过的难度的技术。

第一方面,本申请实施例提供了一种基于字符旋转检测的验证码验证方法,所述方法包括:生成字符矩阵,其中所述字符矩阵的各行和各列分别有多个字符;对所述字符矩阵的指定行和/或指定列进行旋转,使得指定行和/或指定列中的字符全都转动一个固定角度;显示指定行和/或指定列旋转后的字符矩阵作为验证码;接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作,在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着所述旋转的方向的相反方向转动所述固定角度;基于所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列的比较,进行验证码验证。

第二方面,本申请实施例提供了一种基于字符旋转检测的验证码验证装置,所述装置包括:生成单元,用于生成字符矩阵,其中所述字符矩阵的各行和各列分别有多个字符;旋转单元,用于对所述字符矩阵的指定行和/或指定列进行旋转,使得指定行和/或指定列中的字符全都转动一个固定角度;验证码显示单元,用于显示指定行和/或指定列旋转后的字符矩阵作为验证码;接受单元,用于接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作,在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着所述旋转的方向的相反方向转动所述固定角度;验证码验证单元,用于基于所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列的比较,进行验证码验证。

第三方面,本申请实施例提供了一种设备,包括处理器、存储器和显示器;所述存储器包含可由所述处理器执行的指令以使得所述处理器执行:生成字符矩阵,其中所述字符矩阵的各行和各列分别有多个字符;对所述字符矩阵的指定行和/或指定列进行旋转,使得指定行和/或指定列中的字符全都转动一个固定角度;显示指定行和/或指定列旋转后的字符矩阵作为验证码;接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作,在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着所述旋转的方向的相反方向转动所述固定角度;基于所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列的比较,进行验证码验证。

第四方面,本申请实施例提供了一种机器可读介质,包含计算机程序,所述计算机程序包括用于执行以下的程序代码:生成字符矩阵,其中所述字符矩阵的各行和各列分别有多个字符;对所述字符矩阵的指定行和/或指定列进行旋转,使得指定行和/或指定列中的字符全都转动一个固定角度;显示指定行和/或指定列旋转后的字符矩阵作为验证码;接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作,在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着所述旋转的方向的相反方向转动所述固定角度;基于所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列的比较,进行验证码验证。

本发明实施例中,字符矩阵作为验证码,并且在这个字符矩阵中有些行和/或列是旋转过的,即该行和/或该列中所有字符都转动一个角度,这样,机器攻击时通过ocr等方法就很难识别出转动角度的字符。而且,想要通过验证,用户必须将字符矩阵中旋转过的行和/或列找出来,并旋转回旋操作,让这些行和/或列中转动角度的字符再回旋回去。人用肉眼很容易识别出哪些行和/或列被旋转过,并很容易回旋回去,但机器很难通过ocr等识别出转动角度的字符,进而也就更能把这些字符回旋回去。因此,使恶意用户更难于借助机器识别出显示的验证码从而导致验证通过,进一步降低恶意用户验证码验证通过的难度。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了根据本申请一个实施例的基于字符旋转检测的验证码验证方法的示例性流程图;

图2a-2c示出了根据本申请一个实施例对一个字符矩阵进行行旋转和列旋转,直至得到行和列旋转后的字符矩阵的一个示例性过程;

图2d-2f示出了根据本申请一个实施例用户对显示的行和列旋转后的字符矩阵进行行回旋和列回旋,直至回复到最初的字符矩阵的一个示例性过程;

图3示出了根据本申请一个实施例的基于字符旋转检测的验证码验证装置的示例性结构框图;

图4示出了适于用来实现本申请实施例的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如背景技术中提到的,在互联网网站登录时,常常要求用户按照页面上显示的验证码在指定区域输入该显示的验证码。如果用户输入的与页面上显示的一致,则验证码验证通过。验证码的意义在于:它可以区分是人在正常访问页面,还是计算机的攻击行为。因为人看到页面上显示的验证码,可以很容易在指定区域填写该验证码,但机器去做则会有一些难度,这样,如果恶意用户想要频繁登录、刷票、灌水等,则每做一次需要识别显示的验证码并进行填写,提高了恶意用户频繁攻击的难度。但是,虽然有了验证码后,恶意用户频繁攻击网站比较困难,但借助于目前已经很成熟的ocr技术,还是很容易将网站上显示的验证码进行ocr识别,将识别结果填写在指定区域,正确比例也是比较高的。因此,需要一种进一步使恶意用户更难于借助机器识别出显示的验证码从而填写正确的验证码导致验证通过、进一步降低恶意用户验证通过的难度的方案。

本发明实施例中,字符矩阵作为验证码,并且在这个字符矩阵中有些行和/或列是旋转过的,即该行和/或该列中所有字符都转动一个角度,这样,机器攻击时通过ocr等方法就很难识别出转动角度的字符。而且,想要通过验证,用户必须将字符矩阵中旋转过的行和/或列找出来,并旋转回旋操作,让这些行和/或列中转动角度的字符再回旋回去。人用肉眼很容易识别出哪些行和/或列被旋转过,并很容易回旋回去,但机器很难通过ocr等识别出转动角度的字符,进而也就更能把这些字符回旋回去。因此,使恶意用户更难于借助机器识别出显示的验证码从而导致验证通过,进一步降低恶意用户验证码验证通过的难度。

参考图1,其示出了根据本申请一个实施例的基于字符旋转检测的验证码验证方法的流程图。

字符是指文字或符号。文字包括中文文字、英文文字或字母、其他国家文字或字母、数字等。符号包括标点符号、形状标记、特殊符号等。字符旋转检测是指对用户旋转字符的检测。例如,在界面上显示能让用户选择界面上显示的字符的工具。借助于这些工具,用户就可以让界面上的一些字符旋转,而另一些字符不动。检测用户让哪些字符旋转,并以此来判断用户验证是否通过。验证码验证就是通过向用户显示验证码,并让用户响应于验证码进行要求的动作,如果用户做了正确的动作则验证通过的验证技术。

在步骤110中,生成字符矩阵,其中所述字符矩阵的各行和各列分别有多个字符。

字符矩阵是由字符组成的矩阵,一般有行和列。本发明实施例中的字符矩阵的每行和每列分别有多个字符。图2a示出了一个生成的字符矩阵,它有3行,5列。每行有5个字符。每列有3个字符。在图2a中,每个字符都是数字,但也有可能是字母、符号等。

在步骤120中,对所述字符矩阵的指定行和/或指定列进行旋转,使得指定行和/或指定列中的字符全都转动一个固定角度。

这里的指定行可以是一行,也可以是多行。这里的指定列可以是一列,也可以是多列。例如,可以仅对字符矩阵的一行进行旋转,列不旋转;也可以可以仅对字符矩阵的一列进行旋转,行不旋转;可以仅对字符矩阵的多行进行旋转,列不旋转;也可以可以仅对字符矩阵的多列进行旋转,行不旋转;可以对字符矩阵的多行和一列进行旋转;可以对字符矩阵的一行和多列进行旋转;也可以对字符矩阵的多行和多列进行旋转。

行的旋转是指行中的每个字符都转动一个固定角度。列的旋转是指列中的每个字符都转动一个固定角度。

在图2a-2c的例子中,固定角度是90°。90°的好处是可以让用户更清楚地看到字符的旋转,因为旋转90°后字符仍然是垂直或水平的,不会发生倾斜而让用户难以判断。

例如,指定列是第2列,指定行是第2行。因此,针对图2a所示的字符矩阵,将第2列的每个字符顺时针方向旋转90°,变成如图2b所示。然后,将第2行的每个字符顺时针方向旋转90°,变成如图2c所示。

在步骤130中,显示指定行和/或指定列旋转后的字符矩阵作为验证码。

例如,图2c所示的字符矩阵就是本发明实施例的一个验证码。

在步骤140中,接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作,在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着所述旋转的方向的相反方向转动所述固定角度。

行回旋是指使旋转后的行回到原来状态,即行中的转动了固定角度的字符沿相反方向再转动回来。列回旋是指使旋转后的列回到原来状态,即列中的转动了固定角度的字符沿相反方向再转动回来。接受行回旋和/或列回旋操作是指响应于用户对旋转后的行和/或列进行回旋操作的指示,将这种对行和/或列的回旋后的结果显示出来。

在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着步骤120中所述旋转的方向的相反方向转动所述固定角度。例如,步骤120中,是将指定行和/或列沿顺时针方向转动90°。在此步骤中,回旋就是将用户选定进行行回旋的行和/或进行列回旋的列沿逆时针方向转动90°。

在一个实施例中,步骤140包括:在指定行和/或指定列旋转后的字符矩阵的各行的一端、各列的一端显示回旋操作符;响应于检测到对行和/或列的一端的回旋操作符的选择,接受用户对该行和/或列的行和/或列回旋操作。

如图2d,就是在图2c的字符矩阵的每列的上端、每行的左端加显示一个回旋操作符(一个逆时针方向的圆箭头)后的结果。图2a-2c是后台处理时的字符矩阵,用户是看不到的。图2d-2f是显示给用户的,用户能够看到。用户看到了图2d所示的字符矩阵后,很容易发现其中的第2行、第2列都是旋转过的,它们都沿顺时针方向转动了90°,其中第2行、第2列交叉处的“3”由于两次转动而翻转了180°。这时,用户先决定将第2行回旋,于是选择(例如点击)第2行左侧的回旋操作符,于是第2行的所有字符沿逆时针方向回转90°,变成如图2e所示。接着,用户将第2列回旋,于是选择(例如点击)第2列上面的回旋操作符,于是第2列的所有字符沿逆时针方向回转90°,变成如图2f所示。如果用户先选择将第2列回旋,再将第2行回旋,结果也与图2f是一样的。

在步骤150中,基于所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列的比较,进行验证码验证。

在一个实施例中,步骤150包括:比较所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列是否一致;如一致,则验证码验证通过;反之,则验证码验证未通过。

例如,如果在步骤120中,旋转的指定行是第2行,指定列是第2列,在步骤140中,用户选定进行行回旋的行也是第2行,用户选定进行行回旋的列也是第2列,则可以认为验证码验证通过。如果在步骤120中,旋转的指定行是第2行,指定列是第2列,在步骤140中,用户选定进行行回旋的行也是第2行,用户选定进行行回旋的列也是第3列,则可以认为验证码验证未通过。

在一个实施例中,在所述指定行和指定列的总数为n的情况下,在步骤140之前,所述方法包括:显示n作为用户进行行回旋和/或列回旋时选定的行和列的总数,其中,n为大于等于2的整数。例如,在步骤120中,旋转的指定行是第2行,指定列是第2列,则n为2。

显示用户进行行回旋和/或列回旋时选定的行和列的总数的好处是,便于用户正确地选择行和/或列进行回旋。例如,如果不显示这一限制,用户在看到图2d的字符阵列时,可能将第2行行回旋5次、再将第2行列回旋1次,其中行回旋5次与行回旋1次的效果是一样的。虽然最后结果也能得到图2f,但并不是所期望的选择方式。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

进一步参考图3,其示出了根据本申请一个实施例的基于字符旋转检测的验证码验证装置300的示例性结构框图。它包括生成单元310、旋转单元320、验证码显示单元330、接受单元340、验证码验证单元350。

生成单元310生成字符矩阵,其中所述字符矩阵的各行和各列分别有多个字符。

字符矩阵是由字符组成的矩阵,一般有行和列。本发明实施例中的字符矩阵的每行和每列分别有多个字符。图2a示出了一个生成的字符矩阵,它有3行,5列。每行有5个字符。每列有3个字符。在图2a中,每个字符都是数字,但也有可能是字母、符号等。

旋转单元320对所述字符矩阵的指定行和/或指定列进行旋转,使得指定行和/或指定列中的字符全都转动一个固定角度。

这里的指定行可以是一行,也可以是多行。这里的指定列可以是一列,也可以是多列。例如,可以仅对字符矩阵的一行进行旋转,列不旋转;也可以可以仅对字符矩阵的一列进行旋转,行不旋转;可以仅对字符矩阵的多行进行旋转,列不旋转;也可以可以仅对字符矩阵的多列进行旋转,行不旋转;可以对字符矩阵的多行和一列进行旋转;可以对字符矩阵的一行和多列进行旋转;也可以对字符矩阵的多行和多列进行旋转。

行的旋转是指行中的每个字符都转动一个固定角度。列的旋转是指列中的每个字符都转动一个固定角度。

在图2a-2c的例子中,固定角度是90°。90°的好处是可以让用户更清楚地看到字符的旋转,因为旋转90°后字符仍然是垂直或水平的,不会发生倾斜而让用户难以判断。

例如,指定列是第2列,指定行是第2行。因此,针对图2a所示的字符矩阵,将第2列的每个字符顺时针方向旋转90°,变成如图2b所示。然后,将第2行的每个字符顺时针方向旋转90°,变成如图2c所示。

验证码显示单元330显示指定行和/或指定列旋转后的字符矩阵作为验证码。

例如,图2c所示的字符矩阵就是本发明实施例的一个验证码。

接受单元340接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作,在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着所述旋转的方向的相反方向转动所述固定角度。

行回旋是指使旋转后的行回到原来状态,即行中的转动了固定角度的字符沿相反方向再转动回来。列回旋是指使旋转后的列回到原来状态,即列中的转动了固定角度的字符沿相反方向再转动回来。接受行回旋和/或列回旋操作是指响应于用户对旋转后的行和/或列进行回旋操作的指示,将这种对行和/或列的回旋后的结果显示出来。

在所述行回旋和/或列回旋操作中,用户选定进行行回旋的行和/或进行列回旋的列向着上面所述的旋转过程中所述旋转的方向的相反方向转动所述固定角度。例如,上面所述的旋转过程中,是将指定行和/或列沿顺时针方向转动90°。在此步骤中,回旋就是将用户选定进行行回旋的行和/或进行列回旋的列沿逆时针方向转动90°。

在一个实施例中,接受单元340用于在指定行和/或指定列旋转后的字符矩阵的各行的一端、各列的一端显示回旋操作符;响应于检测到对行和/或列的一端的回旋操作符的选择,接受用户对该行和/或列的行和/或列回旋操作。

如图2d,就是在图2c的字符矩阵的每列的上端、每行的左端加显示一个回旋操作符(一个逆时针方向的圆箭头)后的结果。图2a-2c是后台处理时的字符矩阵,用户是看不到的。图2d-2f是显示给用户的,用户能够看到。用户看到了图2d所示的字符矩阵后,很容易发现其中的第2行、第2列都是旋转过的,它们都沿顺时针方向转动了90°,其中第2行、第2列交叉处的“3”由于两次转动而翻转了180°。这时,用户先决定将第2行回旋,于是选择(例如点击)第2行左侧的回旋操作符,于是第2行的所有字符沿逆时针方向回转90°,变成如图2e所示。接着,用户将第2列回旋,于是选择(例如点击)第2列上面的回旋操作符,于是第2列的所有字符沿逆时针方向回转90°,变成如图2f所示。如果用户先选择将第2列回旋,再将第2行回旋,结果也与图2f是一样的。

验证码验证单元350基于所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列的比较,进行验证码验证。

在一个实施例中,验证码验证单元350进一步用于:比较所述行回旋和/或列回旋操作中用户选定的行和/或列与所述旋转中的指定行和/或指定列是否一致;如一致,则验证码验证通过;反之,则验证码验证未通过。

例如,如果在旋转过程中,旋转的指定行是第2行,指定列是第2列,在回旋过程中,用户选定进行行回旋的行也是第2行,用户选定进行行回旋的列也是第2列,则可以认为验证码验证通过。如果在旋转过程中,旋转的指定行是第2行,指定列是第2列,在回旋过程中,用户选定进行行回旋的行也是第2行,用户选定进行行回旋的列也是第3列,则可以认为验证码验证未通过。

在一个实施例中,所述装置包括:回旋总数显示单元,用于在所述指定行和指定列的总数为n的情况下,在接受用户对指定行和/或指定列旋转后的字符矩阵的行回旋和/或列回旋操作之前,显示n作为用户进行行回旋和/或列回旋时选定的行和列的总数,其中,n为大于等于2的整数。例如,在旋转的过程中,旋转的指定行是第2行,指定列是第2列,则n为2。

显示用户进行行回旋和/或列回旋时选定的行和列的总数的好处是,便于用户正确地选择行和/或列进行回旋。例如,如果不显示这一限制,用户在看到图2d的字符阵列时,可能将第2行行回旋5次、再将第2行列回旋1次,其中行回旋5次与行回旋1次的效果是一样的。虽然最后结果也能得到图2f,但并不是所期望的选择方式。

下面参考图4,其示出了适于用来实现本申请实施例的计算机系统400的结构示意图。

如图4所示,计算机系统400包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有系统400操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。

特别地,根据本公开的实施例,上文参考图1描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行图1的方法的程序代码。

在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中。这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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