发明内容
本发明要解决的技术问题在于,针对现有技术的验证码不安全的缺陷提供一种图片验证码的生成方法及其系统,增加机器识别验证码图片字符的难度,同时也增加利用诸如人工穷举识别所有的验证码图片,再按图片特征来匹配人工识别的结果等此类破解方法的难度,提高网络服务系统的安全性的同时也降低了辨认验证码的难度,改善用户体验。
本发明解决其技术问题所采用的技术方案是:
提供一种图片验证码的生成方法,包括以下步骤:
A、获取验证码请求信息,再执行步骤B;
B、随机调用一个字符串,随机标记所述字符串中的一个或者多个字符,再执行步骤C;
C、将标记的一个字符或者多个字符保存为用于与用户输入的验证码进行比对的待验证会话,再执行步骤D;
D、将标记后的所述字符串生成验证码图片并显示,同时提示用户输入验证码图片中被标记的一个或多个字符。
本发明图片验证码的生成方法中,步骤B中所述标记方法为改变所述字符串中字体的颜色、字体大小、字体背景或者字体种类,或者另外给所述字符串中字符添加标识符号。
本发明图片验证码的生成方法中,其中步骤B是从多个标记方法中随机选取一种或者多种标记方法来标记所述字符串中的一个或者多个字符。
本发明图片验证码的生成方法中,步骤C中是按照一定的规则将标记的一个字符或者多个字符进行保存。
本发明图片验证码的生成方法中,步骤B中所述字符串为一段有意义的短句。
本发明还构造了一种图片验证码的生成系统,包括:
验证码请求信息获取单元,用于获取用户的验证码请求信息;
字符串获取单元,用于根据验证码请求信息获取单元的请求信息,随机获取一个字符串;
标记单元,用于随机选取一种或者多种标记方法来标记所述字符串中的一个或者多个字符;
验证码图片生成单元,用于生成包含有一个或者多个被标记字符的所述字符串的验证码图片;
待验证会话生成单元,用于根据所述字符串中所有被标记的字符生成待验证会话;
输入方法生成单元,用于产生提示用户输入验证码图片中被标记的一个或多个字符的输入方法;
显示单元,用于显示所述验证码图片,以及所述输入方法;
存储单元,用于存储所述字符串、所述标记方法、所述验证码图片和所述待验证会话。
本发明的图片验证码生成系统中,所述标记方法包括改变所述字符串中字体的颜色、字体大小、字体背景或者字体种类,或者另外给所述字符串中的字符添加标识符号。
本发明的图片验证码生成系统中,所述待验证会话生成单元是按照一定的规则将所述字符串中所有被标记的字符生成所述待验证会话。
本发明的图片验证码生成系统中,所述存储单元中存储的字符串是一段有意义的短句。
本发明的图片验证码生成系统中,所述输入方法以文本的形式单独显示或者和验证码一起以图片的形式显示。
本发明产生的有益效果是:通过随机标记字符串中的一个或者多个字符,增加了验证码的变化的个数,降低了出现相同验证码的几率;用户根据输入方法的提示输入被标记的一个或者多个字符,大大增加了机器识别验证码图片字符的难度,同时也大大增加了利用诸如人工穷举识别所有的验证码图片,再按图片特征来匹配人工识别的结果等此类破解方法的难度,大大提高网络服务系统的安全性。
具体实施方式
如图1所示,提供了本发明的较佳实施例图片验证码的生成方法,包括以下步骤:
S101、获取验证码请求信息,再执行步骤S102;
S102、随机调用一个字符串,随机标记字符串中的一个或者多个字符,再执行步骤S103;
S103、将标记的一个字符或者多个字符保存为用于与用户输入的验证码进行比对的待验证会话,再执行步骤S104;
S104、将标记后的字符串生成验证码图片并显示,同时执行步骤S105;
S105、提示用户输入验证码图片中被标记的一个或多个字符。
进一步地,本发明较佳实施例图片验证码的生成方法中,步骤S102中标记方法为改变字符串中字体的颜色、字体大小、字体背景或者字体种类,或者另外给字符串中字符添加标识符号。标识方法还可以是用字符、线条、点、字形等,更复杂点的可以用图形和图案来标识,稍复杂一点的图形和图案就大大增加了程序自动识别的难度,而没有被标识出来的字符本身就成了干扰。总之标记方法有很多种,只要能够让用户方便辨认所标记的字符即可。
比如一个长度为10的字符串,从中随机标识出四个字符的组合有210种,如果有S种标记方法的话,就有210*S种变化,比如让用户输入某种颜色字体的字符、让用户输入斜体的字符或者让用户输入用某种图案标识出的字符。
假设用于生成验证码图片的字符串长度为M,只使用一种标记方法,被标记出的字符数为N(1≤N≤M),标记方法种类为S种,验证码变化的次数为T,那么,
如果一个验证码短句有10个字符,从中随机选取1到4个字符,且用10中标记方法,那么总的变化次数就是3850种,那么网站只需要3句这样的短句就可以超过当前常见的4位数字验证码的变化效果(4位数字的变化次数是10000种),如果随机选取1到5个字符,那么变化就有6370种,如果是从20个字符中随机选取1-5个的话,那么总的变化数接近22万,3个长度为20的验证码短句的变化数就能超过由62个大小写字母和数字随机组成的4位验证码的变化,且前者只是需要用户输入标记出的部分字符,且每次用户看到的验证码的标记方法是随机变化的,被标记处的字符个数也是在一定范围内随机变化的,这次需要用户输入其中4个斜体字符,下次可能就是3个红颜色的字符,还可以用复杂的图案比如用一个形如苹果的图案来标识,请用户输入有苹果标记的字符,这样子就让图片验证码的破解难度大大增加。
进一步地,本发明较佳实施例图片验证码的生成方法中,其中步骤S102可以是从多个标记方法中随机选取一种标记方法来标记字符串中的一个或者多个字符,也可以同时使用两种或者两种以上的标记方法对字符串中的字符进行标记,如改变字符串中一部字体的大小,同时改变一部分字体的背景颜色。一般只使用一种标记方法,这样可以让用户更容易识别,又可以减少用户输入的字符数,使得通过验证更加快捷。
进一步地,本发明较佳实施例图片验证码的生成方法中,步骤S103中是按照一定的规则将标记的一个字符或者多个字符进行保存,如按照字符串中标记的一个字符或者多个字符从前向后顺序进行保存,或者按照字符串中标记的一个字符或者多个字符从后往前逆序进行保存,或者将字符串中标记的一个字符或者多个字符以任意顺序进行保存,只要所保存的字符串中所有的被标记的字符即可。所以被标识的字符数既可以小于等于图片验证码中字符串的字符数,也可以大于图片验证码中字符串的字符数。但一般只使用一种标识方法标记字符串,所以被标识的字符数一般是小于等于图片验证码中字符串的字符数。但是这会要求提示用户输入验证码的输入方法与之相对应,以保证程序能够快速正确判断用户所输入的验证码是否与待验证会话中的内容相符,从而使用户通过验证或者重新输入新的验证码。
进一步地,本发明较佳实施例图片验证码的生成方法中,步骤S102中字符串为一段有意义的短句。本发明只需要用户输入验证码图片中的部分字符,而这些字符是程序随机标识出来的,因此用来生成验证码图片的字符可以不再是随机的一些字符组合,而可以是一段有意义的短句,利用这一点网站方可以用一些祝福之类的短句来生成验证码,改善用户体验。这样用户很容易看懂图片验证码上所显示的内容,方便用户输入验证码。同时在本发明的图片验证码中没有增加现有技术中诸如线条、点之类的干扰元素,从而更方便用户辨认验证码。
在步骤S105中,会生成并显示提示用户输入验证码图片中被标记的一个或多个字符的一句话,用户根据这句话输入图片验证码中被标识的一个或者多个字符。该提示是以文本的方式单独显示在用户操作的界面,或者以图片的形式和验证码图片一起显示。
如图2所示,本发明较佳实施例根据上述图片验证码的生成方法还构造了一种图片验证码的生成系统,包括验证码请求信息获取单元100,字符串获取单元300,标记单元200,验证码图片生成单元400,待验证会话生成单元201,输入方法生成单元202,存储单元500和显示单元600。其中,
验证码请求信息获取单元100,用于获取用户的验证码请求信息;
字符串获取单元300,用于根据验证码请求信息获取单元的请求信息,随机获取一个字符串;
标记单元200,用于随机选取一种或者多种标记方法来标记字符串中的一个或者多个字符;该标记方法有很多种,只要能方便用户迅速辨认出字符串中被标识的字符即可。
验证码图片生成单元400,用于生成包含有一个或者多个被标记字符的字符串的验证码图片;验证码图片会通过显示单元600在用户操作界面上显示,根据验证码图片中被标记的字符输入验证码。
待验证会话生成单元201,用于根据字符串中所有被标记的字符生成待验证会话;待验证会话会存储在存储单元500中,当用户输入验证码信息后,程序自动调用待验证会话作为判断用户输入的验证码是否正确的依据,在用户输入验证码和待验证会话中的内容相同时,用户通过验证,否则要重新输入新的验证码。
输入方法生成单元202,用于产生提示用户输入验证码图片中被标记的一个或多个字符的输入方法;该输入方法和标记单元200中的标记方法其实是一一对应的,如标记单元200随机将字符串中一个或者多个字符放大,则输入方法就是提示用户输入验证码图片中较大的字符;又如,标记单元200随机将字符串中一个或者多个字符标记为红色,则输入方法就是提示用户输入验证码图片中红色的字符;再如,标记单元200随机在字符串中一个或者多个字符标上方标记了苹果的符号,则输入方法就是提示用户输入验证码图片中标有苹果符号的字符。
显示单元600,用于显示验证码图片,以及输入方法,输入方法是以图片或者文本的方式显示在用户操作界面上。
存储单元500,用于存储字符串、标记方法和待验证会话。
进一步地,本发明较佳实施例图片验证码生成系统中,从存储单元500中随机选取的标记方法包括改变字符串中字体的颜色、字体大小、字体背景或者字体种类,或者另外给字符串中的字符添加标识符号。标识方法还可以是用字符、线条、点、字形等,更复杂点的可以用图形和图案来标识,稍复杂一点的图形和图案就大大增加了程序自动识别的难度,而没有被标识出来的字符本身就成了干扰。总之标记方法有很多种,只要能够让用户方便辨认所标记的字符即可。也可以同时使用两种或者两种以上的标记方法对字符串中的字符进行标记,如改变字符串中一部分字体的大小,同时改变一部分字体的背景颜色。一般只使用一种标记方法,这样既可让用户更容易识别,又可以减少客户输入的字符数,使得通过验证更加快捷。
本发明一个很大的优势在于,即使每次调用的字符串是相同的,每次调用的标记方法也相同,但是因为随机标记的字符或者字符个数不同,使得用户要输入的验证码也不相同,这样验证码这样机器通过事先的程序或者有很好的图像处理功能,也不能正确输入验证码,从而不能通过验证,大大提高了网络服务系统的安全性。
进一步地,本发明较佳实施例图片验证码生成系统中,待验证会话生成单元是按照一定的规则将字符串中所有被标记的字符生成待验证会话。如按照字符串中标记的一个字符或者多个字符从前向后顺序进行保存,或者按照字符串中标记的一个字符或者多个字符从后往前逆序进行保存,或者将字符串中标记的一个字符或者多个字符以任意顺序进行保存,只要所保存的字符串中所有的被标记的字符即可。但是这会要求提示用户输入验证码的输入方法与之相对应,以保证程序能够快速正确判断用户所输入的验证码是否与待验证会话中的内容相符,从而使用户通过验证或者重新输入新的验证码。
进一步地,本发明较佳实施例图片验证码生成系统中,存储单元500中存储的字符串是一段有意义的短句。本发明只需要用户输入验证码图片中的部分字符,而这些字符是程序随机标识出来的,因此用来生成验证码图片的字符可以不再是随机的一些字符组合,而可以是一段有意义的短句,利用这一点网站方可以用一些祝福之类的短句来生成验证码,改善用户体验。这样用户很容易看懂图片验证码上所显示的内容,方便用户输入验证码。同时在本发明的图片验证码中没有增加现有技术中诸如线条、点之类的干扰元素,从而更方便用户辨认验证码。
进一步地,本发明较佳实施例图片验证码生成系统中,用于提示用户输入验证码图片中被标记的一个或者多个字符的输入方法是以文本的形式单独显示在用户操作界面上,或者和验证码一起以图片的形式显示在用户操作界面。当然也可以其他方式显示,只要让用户获知该如何输入验证码图片中被标记的一个或者多个字符即可。
本发明提供的图片验证码,在用户输入验证码的过程中增加了输入方法,而输入方法是以文本或者图片的方式显示的,所以“机器人程序”要破解本发明的验证码,不但要识别验证码图片中的字符,也要识别验证码的输入方法,这样就大大提高了程序对验证码的破解难度。退一步讲,即使程序识别了验证码图片和验证码输入方法中的字符,还是需要更高级别的人工智能来根据输入方法来识别输入对应的字符才能通过验证,这样就大大提高了网络服务系统的安全性;
与输入方法相对应的是标记方法,标记方法有很多种,即使所选用的字符串是相同的标记的结果也会大不相同,而且会大大增加要求用户输入验证码变化的个数,使得输入相同验证码几率变得很小,这样就大大降低了“机器人程序”通过验证的可能性,从而使得网络的安全性有很大的提高。
另外本发明无需在验证码图片中加入干扰机器识别的干扰因素,降低了用户辨认的难度,改善了用户体验;本发明验证码图片上的字符可以是一段有意义的短句,利用这一点网站方可以根据具体的情况用一些祝福的短句或者一句广告词来产生验证码,让用户感觉网络更友好,更人性化,从而改善了用户体验。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。