验证图片的生成方法及装置与流程

文档序号:11833042阅读:253来源:国知局
本发明涉及计算机
技术领域
:,特别涉及一种验证图片的生成方法及装置。
背景技术
::验证码(CAPTCHA,CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart)是一种可以用于区分用户是机器还是人的公共全自动程序。为了防止某些用户使用机器自动进行登录、发布信息、下载等操作,在用户进行相关操作时,服务器会向用户使用的终端下发验证图片,并要求用户输入验证图片中包括的验证码,以确定进行操作的对象是人,而不是机器。在向用户使用的终端下发验证图片之前,服务器需要先生成验证图片。相关技术在生成验证图片时,通常采用如下两种方式:第一种方式:获取包含验证码的初始图片;在该初始图片的整个图片区域生成椒盐噪声,得到验证图片。第二种方式:获取包含验证码的初始图片;在该初始图片中的验证码上生成椒盐噪声,得到验证图片。在实现本发明的过程中,发明人发现相关技术至少存在以下问题:通常,通过中值滤波法可以很好地滤除在整个图片上生成的椒盐噪声。因此,当在整个图片区域生成椒盐噪声得到验证图片时,机器可以通过中值滤波法滤除验证图片中的椒盐噪声,并识别出其中的验证码。另外,由于图像处理领域中的膨胀算法有很好的粘连效果,因此,机器通过膨胀算法可以比较容易地滤除在验证码上生成的校验噪声,从而识别出验证图像中的验证码。综上,通过上述两种方式生成的验证图片被机器破解的风险比较高,防破解能力不强。技术实现要素:为了解决现有技术的问题,本发明实施例提供了一种验证图片的生成方法及装置。所述技术方案如下:第一方面,提供了一种验证图片的生成方法,所述方法包括:获取包含验证码的初始图片;在所述初始图片中选取一个第一区域,所述第一区域包含所述验证码的至少一部分内容;在所述第一区域中所包含的验证码上生成第一噪声点;在所述初始图片的第二区域中生成第二噪声点,得到验证图片,所述第二区域为所述初始图片中除所述第一区域以外的区域。第二方面,提供了一种验证图片的生成装置,所述装置包括:获取模块,用于获取包含验证码的初始图片;选取模块,用于在所述初始图片中选取一个第一区域,所述第一区域包含所述验证码的至少一部分内容;第一生成模块,用于在所述第一区域中所包含的验证码上生成第一噪声点;第二生成模块,用于在所述初始图片的第二区域中生成第二噪声点,得到验证图片,所述第二区域为所述初始图片中除所述第一区域以外的区域。本发明实施例提供的技术方案带来的有益效果是:通过在初始图像中选取的第一区域中所包含的验证码上生成第一噪声点,并在初始图片中除第一区域外的第二区域中生成第二噪声点,使得机器无法通过一些简单算法滤除验证图片中的噪声点,从而增加了机器识别验证码的难度,降低了验证码被机器破解的风险,具有较强的防破解能力。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明一实施例提供的一种验证图片的生成方法的流程图;图2是本发明另一实施例提供的一种验证图片的生成方法的流程图;图3是本发明另一实施例提供的一种验证图片的示意图;图4是本发明另一实施例提供的一种验证图片的生成方法的应用环境示意图;图5是本发明另一实施例提供的一种验证图片的生成装置的结构示意图;图6是本发明另一实施例提供的一种第一生成模块的结构示意图;图7是本发明另一实施例提供的一种第一选取单元的结构示意图;图8是本发明另一实施例提供的一种第二生成模块的结构示意图;图9是本发明另一实施例提供的一种验证图片的生成装置的结构示意图;图10是本发明另一实施例提供的一种服务器的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1是本发明一实施例提供的一种验证图片的生成方法的流程图。参见图1,本发明实施例提供的验证图片的生成方法包括如下步骤:101、获取包含验证码的初始图片。102、在初始图片中选取一个第一区域,其中,第一区域包含验证码的至少一部分内容。103、在第一区域中所包含的验证码上生成第一噪声点。104、在初始图片的第二区域中生成第二噪声点,得到验证图片,其中,第二区域为初始图片中除第一区域以外的区域。本发明实施例提供的方法,通过在初始图像中选取的第一区域中所包含的验证码上生成第一噪声点,并在初始图片中除第一区域外的第二区域中生成第二噪声点,使得机器无法通过一些简单算法滤除验证图片中的噪声点,从而增加了机器识别验证码的难度,降低了验证码被机器破解的风险,具有较强的防破解能力。在另一个实施例中,在第一区域中所包含的验证码上生成第一噪声点,包括:随机选取第一区域中所包含的验证码上的多个第一像素点;将多个第一像素点渲染为第一颜色,得到多个第一噪声点,其中,第一颜色与第一区域中验证码的颜色不同。在另一个实施例中,随机选取第一区域中所包含的验证码上的多个第一像素点,包括:在选取任一像素点时,根据指定随机函数生成一个随机数;判断随机数是否大于指定数值;当随机数大于指定数值时,将像素点作为一个第一像素点。在另一个实施例中,在初始图片的第二区域中生成第二噪声点,包括:随机选取初始图像的第二区域中的多个第二像素点;将多个第二像素点渲染为第二颜色,得到多个第二噪声点,其中,第二颜色与第二区域的颜色不同。在另一个实施例中,得到验证图片之后,还包括:使用指定加密算法,生成验证码的签名,其中,签名用于确定用户根据验证图片提交的答案与验证码是否匹配。上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,在此不再一一赘述。结合图1所对应实施例的内容,图2是本发明另一实施例提供的一种验证 图片的生成方法的流程图。参见图2,本发明实施例提供的方法流程包括:201、获取包含验证码的初始图片。其中,在获取包含验证码的初始图片时,可以先获取任意一张图片;然后,在该图片中添加预先设定的或随机生成的验证码。具体地,为了便于用户后续识别验证图片中的验证码,任意获取的图片的背景颜色可以为纯色。例如,该图片可以为一张白色图片,或为一张粉色图片等。另外,关于验证码的类型,可以有很多种。例如,验证码可以为汉字、字母、数字中的任一种。例如,验证码为数字验证码,或者为字母验证码等。另外,验证码还可以为字母、数字或汉字等中至少两种的组合。例如,验证码可以为字母和数字的组合,或者为字母和汉字的组合,还可以为字母、数字和汉字的组合等。进一步地,关于验证码的颜色,本发明实施例同样不作具体限定。例如,验证码可以为黑色、蓝色等,保证验证码的颜色与获取到的图片的背景颜色不同即可。其中,当验证码包含多个字符时,各个字符的颜色可以相同,也可以不同。另外,每个字符的各部分区域的颜色可以相同,也可以不同。202、在初始图片中选取一个第一区域,其中,第一区域包含验证码的至少一部分内容。关于在初始图片中选取第一区域的方式,可以有很多种。例如,可以在初始图片中随机选取一个第一区域。或者,获取用户在初始图像中选中的区域,将用户选中的区域作为第一区域等。另外,本发明实施例在生成验证图片时,选取的第一区域中包含验证码的至少一部分内容。例如,如果初始图片中的验证码总共包含四个字母,则第一区域中可以包含一个字母、两个字母,或者一个字母中的部分区域等。进一步地,本发明实施例不对第一区域的形状进行限定。例如,该第一区域可以为圆形区域、椭圆区域、矩形区域等。203、在第一区域中所包含的验证码上生成第一噪声点。为了增加机器识别的难度,本发明实施例在生成验证图片时,通过在初始图片中生成一些噪声点来实现。其中,本发明实施例在初始图片中生成的所有噪声点中的一部分噪声点生成于第一区域所包含的验证码上。为了便于描述,将在第一区域中所包含的验证码上生成的噪声点称为第一噪声点。关于在第一区域中所包含的验证码上生成第一噪声点的方式,包括但不限于通过如下步骤2031和步骤2032来实现:2031、随机选取第一区域中所包含的验证码上的多个第一像素点。关于第一像素点的数量,本发明实施例不作具体限定。例如,第一像素点点的数量可以占第一区域内验证码所包括的所有像素点的指定百分比。其中,该指定百分比可以为百分之五十、百分之三十等。其中,在随机选取第一区域中所包含的验证码上的多个第一像素点时,为了控制第一像素点的数量占第一区域内验证码所包括的所有像素点的指定百分比,在选取任一像素点时,可以生成一个随机数,并根据该随机数与指定数值之间的关系来确定是否将该像素点作为一个第一像素点。具体地,在随机选取每个第一像素点时,可以根据指定随机函数生成一个随机数,并判断该随机数是否大于指定数值;当该随机数大于指定数值时,将像素点作为一个第一像素点。其中,该指定随机函数可以为一个能够生成包括1至100之间数字的函数,也可以为一个能够生成介于0与1之间的数值的函数等。另外,指定数值与指定随机函数及指定百分比相关。例如,当指定百分比为百分之五十,且随机函数为一个能够生成包括1至100之间数字的函数时,该指定数值可以为50。当指定随机函数为一个能够生成介于0与1之间的数值的函数,指定百分比为百分之三十时,该指定数值可以为0.3等。2032、将多个第一像素点渲染为第一颜色,得到多个第一噪声点,其中,第一颜色与第一区域中验证码的颜色不同。其中,在将多个第一像素点渲染为第一颜色时,可以将该多个第一像素点 的RGB值转变为第一颜色的RGB值。例如,如果第一颜色的R=125,G=56,B=72,则可以通过将多个第一像素点的颜色由初始图片上验证码的颜色转变为R为125,G为56,B为72的像素点。关于第一颜色的具体颜色类型,本发明实施例不作具体限定。为了能够对机器识别过程造成干扰,该第一颜色与第一区域中验证码的颜色不同。例如,当初始图片中验证码的颜色为黑色、背景颜色为白色时,可以将多个第一像素点渲染为粉色、白色等。204、在初始图片的第二区域中生成第二噪声点,得到验证图片,其中,第二区域为初始图片中除第一区域以外的区域。其中,在初始图片的第二区域中生成第二噪声点时,包括但不限于通过如下步骤2041和步骤2042来实现:2041、随机选取初始图像的第二区域中的多个第二像素点。该步骤的原理同上述步骤2031中的原理一致,具体可参见上述步骤2031中的内容,此处不再赘述。2042、将多个第二像素点渲染为第二颜色,得到多个第二噪声点,其中,第二颜色与第二区域的颜色不同。该步骤的原理同步骤2032中的原理一致,具体可参见上述步骤2032中的内容,此处不再赘述。关于验证图片的格式,本发明实施例不作具体限定。具体地,验证图片的格式包括但不限于为JPEG(JointPhotographicExpertsGroup,联合图像专家小组)、PNG(PortableNetworkGraphicFormat,图像文件存储格式)、GIF(GraphicInterchangeFormat,图形交换格式)或BMP(Bitmap,位图)中的任一种。需要说明的是,本发明实施例仅以先在第一区域中所包含的验证码上生成第一噪声点,再在第二区域中生成第二噪声点为例进行了说明。然而,在具体实施时,也可以先在第二区域中生成第二噪声点,再在第一区域中所包含的验证码上生成第一噪声点;还可以同时在第一区域中所包含的验证码上生成第一 噪声点,并在第二区域中生成第二噪声点。为了便于理解,下面以一个具体的例子说明一下本发明实施例提供的验证图片的生成方法。例如,如果初始图片的背景颜色为黑色、验证码的颜色为白色,则可以先随机获取一个包括部分验证码的圆形区域作为第一区域;然后,将第一区域中所包含的验证码上的多个第一像素点渲染为黑色,将初始图片中除第一区域以外的第二区域中的多个第二像素点渲染为白色。通过这些步骤,实现了在初始图片中的任一个第一区域中的验证码及第二区域中添加了椒盐噪声。图3是本发明另一实施例提供的一种验证图片的示意图。如图3所示,该初始图像的背景颜色为黑色,验证码的颜色为白色,通过上述步骤201至步骤204生成的验证图片如图3中的(a)图所示。将该验证图片通过中值滤波法处理后的图片如图3中的(b)图所示。将该验证图片通过膨胀算法处理后的图片如图3中的(c)图所示。由图3中的(b)图和图3中的(c)图可得,通过本发明实施例提供的方法得到的验证图片,不容易通过中值滤波法和膨胀算法滤除其中的噪声点而得到验证码,因此,不容易被机器识别,增强了验证图片的防破解能力。进一步地,当该验证图片用于对用户的操作进行验证时,能够确保操作者为自然人,而非机器,因而能够提高操作的安全性。205、使用指定加密算法,生成验证码的签名,其中,签名用于确定用户根据验证图片提交的答案与验证码是否匹配。其中,指定加密算法包括但不限于为MD5(Message-DigestAlgorithm5,信息摘要算法5)算法等,本发明实施例不对指定加密算法的类型进行限定。具体地,当使用指定加密算法生成验证码的签名后,在使用该验证图片对用户进行验证时,在用户根据验证图片提交答案后,可以使用该指定加密算法计算用户提交的答案的签名,并判断用户提交答案的签名是否与验证码的签名匹配。如果用户提交答案的签名与验证码的签名匹配,则确定用户通过验证;如果用户提交答案的签名与验证码的签名不匹配,则确定用户未通过验证。进一步地,通过本发明实施例提供的方法生成的验证图片可以应用于任意验证场合,用于区分执行操作的执行者为自然人还是机器。例如,该验证图片可以应用于登录的场合、发帖的场合、回复消息的场合、发表评论的场合、下载文件的场合、投票的场合等。关于验证图片的使用场合,本发明实施例不作具体限定。如图4所示,其示出了一种验证图片的生成方法的应用环境示意图。如图4所示,该应用环境包括终端401、web(网页)服务器402、验证服务器403和验证图片生成服务器404。其中,终端401和web服务器402之间、web服务器与验证服务器403之间、验证服务器403与验证图片生成服务器404之间通过网络连接。该网络可以为有线网络,也可以为无线网络。结合上述应用环境,本发明实施例在验证图片生成服务器404处进行了创新,使得验证图片生成服务器404可以通过上述步骤201至步骤204生成多个验证图片。另外,验证服务器403可以用于通过上述步骤205生成每个验证图片中的验证码对应的签名。当然,签名也可以由验证图片生成服务器404生成。具体地,终端401对应的用户在进行一定的操作,如登录操作、投票操作等时,可以通过操作对应的URL(UniformResourceLocator,统一资源定位符)访问web服务器402。web服务器402确定用户的访问操作后,向验证服务器403请求验证图片。此时,验证服务器403从验证图片生成服务器404拉取其生成的一个验证图片,并生成该验证图片包括的验证码的签名,以及将该验证图片发送至web服务器402,由web服务器402将验证图片发送至终端401。终端401接收该验证图片后,获取用户根据该验证图片输入的验证码后,将该验证码提交至web服务器402,由web服务器402将该验证码提交至验证服务器403。验证服务器403接收用户输入的验证码后,通过指定加密算法生成用户输入的验证码对应的签名,其中,该指定加密算法与验证服务器403生成验证码的签名时使用的指定加密算法相同。接下来,验证服务器403将用户输入的验证码对应的签名与验证图片中的验证码的签名进行匹配,当确定用户输入的验证码 对应的签名与验证图片中的验证码的签名匹配时,确定执行该操作的执行者为终端401对应的用户,而并非机器。此时,终端401对应的用户可以执行该操作。当然,上述过程仅以各个不同的服务器配合来实现验证过程进行了说明,然而,在具体实施时,各个服务器的功能也可以集成在一个服务器,从而由该集成的服务器来实现上述验证过程。例如,可以由验证图片生成服务器404或者验证服务器403集成上述各个服务器的功能,并执行上述验证过程。另外,上述终端401可以为台式计算机、智能手机、平板电脑、电子书阅读器、MP3(MovingPictureExpertsGroupAudioLayerIII,动态影像专家压缩标准音频层面3)播放器、MP4(MovingPictureExpertsGroupAudioLayerIV,动态影像专家压缩标准音频层面3)播放器、膝上型便携计算机、可穿戴设备如智能手环等。本发明实施例提供的方法,通过在初始图像中选取的第一区域中所包含的验证码上生成第一噪声点,并在初始图片中除第一区域外的第二区域中生成第二噪声点,使得机器无法通过一些简单算法滤除验证图片中的噪声点,从而增加了机器识别验证码的难度,降低了验证码被机器破解的风险,具有较强的防破解能力。图5是本发明另一实施例提供的一种验证图片的生成装置的结构示意图,该验证图片的生成装置用于执行上述图1或图2所对应实施例提供的验证图片的生成方法。参见图5,该验证图片的生成装置包括:获取模块501,用于获取包含验证码的初始图片;选取模块502,用于在初始图片中选取一个第一区域,其中,第一区域包含验证码的至少一部分内容;第一生成模块503,用于在第一区域中所包含的验证码上生成第一噪声点;第二生成模块504,用于在初始图片的第二区域中生成第二噪声点,得到验 证图片,其中,第二区域为初始图片中除第一区域以外的区域。本发明实施例提供的装置,通过在初始图像中选取的第一区域中所包含的验证码上生成第一噪声点,并在初始图片中除第一区域外的第二区域中生成第二噪声点,使得机器无法通过一些简单算法滤除验证图片中的噪声点,从而增加了机器识别验证码的难度,降低了验证码被机器破解的风险,具有较强的防破解能力。在另一个实施例中,参见图6,第一生成模块503包括:第一选取单元5031,用于随机选取第一区域中所包含的验证码上的多个第一像素点;第一渲染单元5032,用于将多个第一像素点渲染为第一颜色,得到多个第一噪声点,其中,第一颜色与第一区域中验证码的颜色不同。在另一个实施例中,参见图7,第一选取单元5031包括:生成子单元50311,用于在选取任一像素点时,根据指定随机函数生成一个随机数;判断子单元50312,用于判断随机数是否大于指定数值;确定子单元50313,用于当随机数大于指定数值时,将像素点作为一个第一像素点。在另一个实施例中,参见图8,第二生成模块504包括:第二选取单元5041,用于随机选取初始图像的第二区域中的多个第二像素点;第二渲染单元5042,用于将多个第二像素点渲染为第二颜色,得到多个第二噪声点,其中,第二颜色与第二区域的颜色不同。在另一个实施例中,参见图9,验证图片的生成装置还包括:第三生成模块505,用于使用指定加密算法,生成验证码的签名,其中,签名用于确定用户根据验证图片提交的答案与验证码是否匹配。图10是根据一示例性实施例示出的一种服务器的结构示意图,该服务器可以用于执行上述图1或图2所对应实施例提供的验证图片的生成方法。参照图10,服务器1000包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理组件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行上述图1或图2所对应实施例提供的验证图片的生成方法。服务器1000还可以包括一个电源组件10210被配置为执行服务器1000的电源管理,一个有线或无线网络接口1050被配置为将服务器1000连接到网络,和一个输入输出(I/O)接口1058。服务器1000可以操作基于存储在存储器1032的操作系统,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。其中,一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,所述一个或者一个以上程序包含用于进行以下操作的指令:获取包含验证码的初始图片;在初始图片中选取一个第一区域,其中,第一区域包含验证码的至少一部分内容;在第一区域中所包含的验证码上生成第一噪声点;在初始图片的第二区域中生成第二噪声点,得到验证图片,其中,第二区域为初始图片中除第一区域以外的区域。假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,服务器的存储器中还包含用于执行以下操作的指令:在第一区域中所包含的验证码上生成第一噪声点,包括:随机选取第一区域中所包含的验证码上的多个第一像素点;将多个第一像素点渲染为第一颜色,得到多个第一噪声点,其中,第一颜色与第一区域中验证码的颜色不同。在第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,服务器的存储器中还包含用于执行以下操作的指令:随机选取第一区域中所包含的验证码上的多个第一像素点,包括:在选取任一像素点时,根据指定随机函数生成一个随机数;判断随机数是否大于指定数值;当随机数大于指定数值时,将像素点作为一个第一像素点。在第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,服务器的存储器中还包含用于执行以下操作的指令:在初始图片的第二区域中生成第二噪声点,包括:随机选取初始图像的第二区域中的多个第二像素点;将多个第二像素点渲染为第二颜色,得到多个第二噪声点,其中,第二颜色与第二区域的颜色不同。在第一种至第四种可能的实施方式中的任一种可能的实施方式作为基础而提供的第五种可能的实施方式中,服务器的存储器中还包含用于执行以下操作的指令:得到验证图片之后,还包括:使用指定加密算法,生成验证码的签名,签名用于确定用户根据验证图片提交的答案与验证码是否匹配。本发明实施例提供的服务器,通过在初始图像中选取的第一区域中所包含的验证码上生成第一噪声点,并在初始图片中除第一区域外的第二区域中生成第二噪声点,使得机器无法通过一些简单算法滤除验证图片中的噪声点,从而增加了机器识别验证码的难度,降低了验证码被机器破解的风险,具有较强的防破解能力。需要说明的是:上述实施例提供的验证图片的生成装置在生成验证图片时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模 块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的验证图片的生成装置及服务器与验证图片的生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1