图片验证码生成方法和图片验证码生成装置转让专利

申请号 : CN200710301622.8

文献号 : CN101183458B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王亮王建宇

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明公开了一种图片验证码生成方法,该方法包括:确定随机像素位置及对应于该随机像素位置的变更像素值;将图片验证码中该随机像素位置处的像素值变更为该变更像素值。本发明还公开了一种图片验证码生成装置。应用本发明以后,能够有效防止暴力破解,提高图片验证码的安全性。

权利要求 :

1.一种图片验证码生成方法,其特征在于,该方法包括:

确定随机像素位置及对应于该随机像素位置的变更像素值,其中所述确定随机像素位置包括:确定图片验证码中的像素位置横坐标选取范围和像素位置纵坐标选取范围;在所述像素位置横坐标选取范围内生成随机数作为所述随机像素位置的横坐标,在所述像素位置纵坐标选取范围内生成随机数作为所述随机像素位置的纵坐标;以所生成的随机像素的横坐标和纵坐标确定该随机像素位置;所述确定随机像素位置的变更像素值包括:在[0,255]的范围内生成三个随机数;分别以所生成的三个随机数组成{R,G,B}三个颜色通道,作为该随机像素位置的变更像素值,或变更该随机像素位置处原像素值的R、G和B颜色通道中至少一个颜色通道,以形成所述随机像素位置的变更像素值;

将图片验证码中该随机像素位置处的像素值变更为所述变更像素值。

2.根据权利要求1所述的图片验证码生成方法,其特征在于,所述图片验证码为png文件,该方法进一步包括:确定该png文件的PLTE字段颜色数目S;

在[0,S]的范围内生成随机数目x,并随机生成颜色值P;

将从PLTE标识开始的第x个字节处的颜色值变更为所述P。

3.根据权利要求1所述的图片验证码生成方法,其特征在于,所述图片验证码为JPEG文件、png文件、JPG文件、GIF文件或BMP文件。

4.一种图片验证码生成装置,其特征在于,该装置包括:随机像素确定单元和像素值更改单元,其中:随机像素确定单元,用于确定随机像素位置及对应于该随机像素位置的变更像素值,其中所述确定随机像素位置包括:确定图片验证码中的像素位置横坐标选取范围和像素位置纵坐标选取范围;在所述像素位置横坐标选取范围内生成随机数作为所述随机像素位置的横坐标,在所述像素位置纵坐标选取范围内生成随机数作为所述随机像素位置的纵坐标;以所生成的随机像素的横坐标和纵坐标确定该随机像素位置;所述确定随机像素位置的变更像素值包括:在[0,255]的范围内生成三个随机数;分别以所生成的三个随机数组成{R,G,B}三个颜色通道,作为该随机像素位置的变更像素值,或变更该随机像素位置处原像素值的R、G和B颜色通道中至少一个颜色通道,以形成所述随机像素位置的变更像素值;

像素值更改单元,用于将图片验证码中该随机像素位置处的像素值变更为该变更像素值。

5.根据权利要求4所述的图片验证码生成装置,其特征在于,所述图片验证码为png文件,该装置进一步包括PLTE字段颜色处理单元,所述PLTE字段颜色处理单元,用于确定该png文件的PLTE字段颜色数目S,在[0,S]的范围内随机生成数目x并随机生成颜色值P,并将从PLTE标识开始的第x个字节处的颜色值变更为P。

6.根据权利要求4所述的图片验证码生成装置,其特征在于,

所述图片验证码为JPEG文件、png文件、JPG文件、GIF文件或BMP文件。

说明书 :

技术领域

本发明涉及网络应用(Application)技术领域,更具体地说,本发明涉及一种图片验证码生成方法和图片验证码生成装置。

背景技术

随着计算机和计算机网络的日益普及,互联网已经深入到人们工作、学习和生活的各个领域。网络发展在提供便利的同时也带来各种挑战。一些别有用心的人会利用机器人程序大量地不当使用网络免费资源,例如群发垃圾邮件等,使服务器效能大为降低。也有人利用程序不断发出服务请求回应,进行“饱和攻击”以达到使服务瘫痪的目的。甚至还有人尝试利用暴力破解等手段进行虚拟财产盗窃等。为避免上述恶意行为,设计一套能够让计算机自动分辨信息是来自合理使用者或是非正当使用的机器人程序的工具,就显得非常重要。
图片验证码的主要目的是分辨网络服务使用者是程序还是人类。图片验证码是一幅含有字符的图片,会要求使用者回答在这张图片中显示了哪些文字。为了避免被程序自动识别,通常在图片验证码中将文字进行扭曲,同时加入一些噪声。目前程序对这种文字的识别率仍然不高,人类则能正确地认识图片上的文字,具有较佳的文字识别能力。利用图片验证码机制,可以认为正确回答的是人类,而一直答错的会被认为是程序,从而区别善意使用者和恶意使用者,并由此分别执行相应的后续操作。
图片验证码越来越成为网络服务中身份认定的一种广泛使用工具。随着人工智能和图像理解技术的发展,机器对图像中字符的识别能力越来越强。图片验证码需要在保证人类视觉可辨认的前提下,不断提高抗机器程序破解的能力。
实践证明,对于从图像中分割出来的单字符,现有技术下机器识别率几乎接近完美。增加从图片中分割字符的难度,成为防破解和提高安全性的重要手段。
然而,目前已涌现出一部分人利用验证码库图片数量有限这一局限性,雇佣人力不停地输入验证码,利用验证码图片的重复性来进行暴力破解。
现有的验证码系统一般都是预先生成包含大量的验证码图片的验证码图片库,用户每次提交验证请求,验证码系统随机从验证码图片库中选取一张验证码图片下发给用户。如果用户群很大,比如几个亿用户同时访问一个验证码网页,相对于庞大的拉取验证码的用户来说,验证码系统预先生成的验证码图片库就变得很小了,结果就是同一用户拉取到的相同验证码图片的几率变大,这样验证码有很多都是重复的。破解者根据这一特点,可以先人工输入若干张验证码对应的字符,遇到重复的图片直接提交之前手工记录的验证码字符,这样一来便可以绕过从图片中提取字符来进行验证码破解,从而造成了很大的安全隐患。

发明内容

本发明实施例提出一种图片验证码生成方法,以提高图片验证码的安全性。
本发明实施例提出一种图片验证码生成装置,以提高图片验证码的安全性。
本发明的技术方案如下:
一种图片验证码生成方法,该方法包括:
确定随机像素位置及对应于该随机像素位置的变更像素值,其中所述确定随机像素位置包括:确定图片验证码中的像素位置横坐标选取范围和像素位置纵坐标选取范围;在所述像素位置横坐标选取范围内生成随机数作为所述随机像素位置的横坐标,在所述像素位置纵坐标选取范围内生成随机数作为所述随机像素位置的纵坐标;以所生成的随机像素的横坐标和纵坐标确定该随机像素位置;所述确定随机像素位置的变更像素值包括:在[0,255]的范围内生成三个随机数;分别以所生成的三个随机数组成{R,G,B}三个颜色通道,作为该随机像素位置的变更像素值,或变更该随机像素位置处原像素值的R、G和B颜色通道中至少一个颜色通道,以形成所述随机像素位置的变更像素值;
将图片验证码中该随机像素位置处的像素值变更为所述变更像素值。
一种图片验证码生成装置,该装置包括:随机像素确定单元和像素值更改单元,其中:
随机像素确定单元,用于确定随机像素位置及对应于该随机像素位置的变更像素值,其中所述确定随机像素位置包括:确定图片验证码中的像素位置横坐标选取范围和像素位置纵坐标选取范围;在所述像素位置横坐标选取范围内生成随机数作为所述随机像素位置的横坐标,在所述像素位置纵坐标选取范围内生成随机数作为所述随机像素位置的纵坐标;以所生成的随机像素的横坐标和纵坐标确定该随机像素位置;所述确定随机像素位置的变更像素值包括:在[0,255]的范围内生成三个随机数;分别以所生成的三个随机数组成{R,G,B}三个颜色通道,作为该随机像素位置的变更像素值,或变更该随机像素位置处原像素值的R、G和B颜色通道中至少一个颜色通道,以形成所述随机像素位置的变更像素值;
像素值更改单元,用于将图片验证码中该随机像素位置处的像素值变更为该变更像素值。
从上述技术方案中可以看出,在本发明实施例中,首先确定随机像素位置及对应于该随机像素位置的变更像素值,然后再将图片验证码中该随机像素位置处的像素值变更为所述变更像素值。由此可见,应用本发明实施例以后,由于图片验证码的像素得到了变更,因此所有图片验证码的唯一标识值(比如MD5值,或者CRC值)是不同的。这样,即使图片验证码库中的图片验证码字符相同,对于机器来说,也是不同的图片验证码,从而可以有效对抗暴力破解,增加了破解难度,提高了图片验证码的安全性。
还有,本发明实施例还提供了针对png文件格式的图片验证码生成方法,可以进一步有效地对抗暴力破解,并增加了破解难度。
另外,本发明实施例采用随机选取像素坐标位置、PLTE颜色位置、像素值、颜色值的方法,增加了采用暴力方法进行破解的代价和成本。

附图说明

图1为根据本发明的图片验证码生成方法流程示意图;
图2为根据本发明实施例的图片验证码生成方法流程示意图;
图3为根据本发明的图片验证码生成装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附
图及具体实施例对本发明再作进一步详细的说明。
在本发明实施例中,提出了一种有效防范基于图片重复率过高的暴力破解的图片验证码生成方法。首先,确定随机像素位置及对应于该随机像素位置的变更像素值,然后将图片验证码中该随机像素位置处的像素值变更为所述变更像素值,从而有效防止暴力破解,增加破解难度。
图1为根据本发明的图片验证码生成方法流程示意图。
如图1所示,该方法包括:
步骤101:确定随机像素位置及对应于该随机像素位置的变更像素值;
在这里,可以通过随机确定像素坐标的方式来确定随机像素位置。比如,首先确定图片验证码中的像素位置横坐标选取范围和像素位置纵坐标选取范围,然后在所述像素位置横坐标选取范围内生成随机数作为所述随机像素位置的横坐标,再在所述像素位置纵坐标选取范围内生成随机数作为所述随机像素位置的纵坐标,最后以所生成的随机像素的横坐标和纵坐标确定该随机像素位置。
其中,可以变更该随机像素位置处原像素值的R、G和B通道中至少一个通道,以形成所述随机像素位置的变更像素值。
可选地,也可以完全随机生成一个变更像素值。
如果完全随机生成一个变更像素值,可以具体执行以下步骤:首先在[0,255]的范围内生成三个随机数;然后分别以所生成的三个随机数组成{R,G,B}三个颜色通道,利用该{R,G,B}颜色通道作为该随机像素位置的变更像素值。
步骤102:将图片验证码中该随机像素位置处的像素值变更为所述变更像素值。
验证码图片的文件格式可以有很多,具体可以为JPEG文件、png文件、JPG文件、GIF文件或BMP文件等等。
以上虽然罗列出一些具体的验证码图片格式,本领域技术人员可以意识到,本发明并不局限于上述格式,而是可以适用于任意的验证码图片格式。
如果验证码图片格式为png文件格式,本发明实施例还可以通过对png文件的PLTE字段的颜色值进行修改,进一步达到对抗暴力破解的目的。
具体地,首先从验证码图片库中随机选取一张验证码图片,根据png文件格式找到此文件中PLTE字段,并读出此png文件中所包含的所有颜色的数目,在此颜色数目范围内随机生成一个位置和颜色值,并将此位置上的颜色值修改为生成的随机颜色值,以作为生成的图片验证码,然后再将该修改后的验证码图片下发给用户。
更详细地,首先确定该png文件的PLTE字段颜色数目S,再在[0,S]的范围内生成随机数目x,并随机生成颜色值P;并将从PLTE标识开始的第x个字节处的颜色值修变更为P。其中在Png文件格式中,按顺序包括png文件标识、头信息、PLTE调色板、数据块、结束块等模块。其中,PLTE调色板模块包含了此png图片中用到的所有颜色信息。比如:十六进制串504C 5445为png文件中对应的PLTE标识,此PLTE标识之前的4个字节字符串为PLTE字段所包含的调色板数据长度,单位为字节,如00 00 00 27说明调色板数据长为39字节,即13个颜色数(每个颜色以R、G、B形式占用3个字节)。
基于png文件格式的上述特点,先从图片验证码库中随机选取一张验证码图片,在此png文件中查找十六进制串504C 5445,读出此位置前4个字节的数据内容,便可以得到PLTE字段调色板数据的长度s。这样,颜色位置的选取范围为{0,s},然后可以采用随机算法生成1个随机数,该生成的随机数为需要修改颜色的位置x,颜色值由{R,G,B}形式三个通道组成,每个通道的上下限(弧度制)的上下限为{0,255},再采用随机算法生成1个随机数,这个随机数为需要修改颜色位置的一个通道的值P。
然后,将从PLTE标识开始的第x字节处的颜色通道值修改为P,从而可以生成新的图片验证码,并将该新的图片验证码下发给用户。
下面再详细描述针对图1所示流程的一个具体实施例。
图2为根据本发明实施例的图片验证码生成方法流程示意图。
如图2所示,该方法包括:
步骤201:生成随机像素位置坐标和随机像素值。
在这里,可以预先定义好像素位置坐标的选取范围,其中横坐标上下限为{0,图片宽},纵坐标上下限为{0,图片高},并采用随机算法生成2个随机数,这2个随机数为需要修改像素的坐标{x0,y0}。
随机像素值的由{R,G,B}形式三个通道组成,每个通道的上下限(弧度制)的上下限{0,255},再采用随机算法生成3个随机数,这3个随机数为需要修改像素的像素值{R0,G0,B0}。
步骤202:随机选择图片验证码库中的一张验证码图片。
步骤203:变更该验证码图片的随机像素位置处的像素值为该随机像素值。
在这里,取出此验证码图片中坐标{x0,y0}点的像素值,将其设置为新的像素值{R0,G0,B0},从而可以生成新的图片验证码,并将该新的图片验证码下发给用户。
本发明实施例还提出了一种图片验证码生成装置。
图3为根据本发明的图片验证码生成装置结构示意图。
如图3所示,该装置包括随机像素确定单元301和像素值更改单元302,其中:
随机像素确定单元301,用于确定随机像素位置及对应于该随机像素位置的变更像素值;
像素值更改单元302,用于将图片验证码中该随机像素位置处的像素值变更为该变更像素值。
其中,所述随机像素生成单元301,用于确定图片验证码中的像素位置横坐标选取范围和像素位置纵坐标选取范围,在所述像素位置横坐标选取范围内生成随机数作为所述随机像素的横坐标,在所述像素位置纵坐标选取范围内生成随机数作为所述随机像素的纵坐标,并以所生成的该随机像素的横坐标和纵坐标确定该随机像素位置。
所述随机像素生成单元302,用于在[0,255]的范围内生成三个随机数,并分别以所生成的三个随机数组成{R,G,B}三个颜色通道,作为该随机像素位置的变更像素值。
当图片验证码为png文件时,该装置可以进一步包括PLTE字段颜色处理单元,
所述PLTE字段颜色处理单元,用于确定该png文件的PLTE字段颜色数目S,在[0,S]的范围内随机生成数目x并随机生成颜色值P,并将从PLTE标识开始的第x个字节处的颜色值修变更为P。
综上所述,在本发明实施例中,首先确定随机像素位置及对应于该随机像素位置的变更像素值,然后再将图片验证码中该随机像素位置处的像素值变更为所述变更像素值。这样,本发明实施例保证了所有图片验证码的唯一标识值(比如MD5值,或者CRC值)是不同的,即使图片验证码中的字符相同,对于机器来说,也是不同的图片验证码,从而有效对抗暴力破解,增加了破解难度,提高了图片验证码的安全性。
另外,本发明实施例还提供了针对png文件格式修改PLTE字段颜色值的图片验证码生成方法,可以进一步有效地对抗暴力破解,并增加了破解难度。
另外,本发明实施例采用随机选取像素坐标位置、PLTE颜色位置、像素值、颜色值的方法,增加了采用暴力方法进行破解的代价和成本。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。