发明内容
为克服相关技术中验证码图片难以兼顾安全性和用户易识别要求的问题,本申请提供一种动态验证码图片生成方法及装置。
根据本申请实施例的第一方面,提供一种动态验证码图片生成方法,包括:
使用随机字符生成验证码;
根据所述验证码生成基础静态图层;
使用随机字符生成多个干扰图层,将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧;
为得到的多个复合帧预设帧速以生成动态验证码图片。
优选的,所述预设帧速为0.05~0.2s。
优选的,所述预设帧速为1s。
优选的,所述干扰图层中随机字符随机分布。
优选的,所述基础静态图层中字符与背景使用对比色,所述验证码的各个字符相互分离。
优选的,所述干扰图层的背景颜色与所述基础静态图层的背景颜色相同,所述干扰图层中的字符与所述基础静态图层中的字符颜色、字体和大小相同。
相应于本申请实施例的第一方面,根据本申请实施例的第二方面,提供一种动态验证码图片生成装置,包括:
验证码生成模块,用于使用随机字符生成验证码;
基础静态图层生成模块,用于根据所述验证码生成基础静态图层;
复合帧生成模块,用于使用随机字符生成多个干扰图层,将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧;
动态验证码图片生成模块,用于为得到的多个复合帧预设帧速以生成动态验证码图片。
优选的,所述复合帧生成模块,包括:
干扰图层生成子模块,用于使用随机字符生成多个干扰图层;
帧合成子模块,用于将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧。
优选的,所述预设帧速为0.05~0.2s。
优选的,所述预设帧速为1s。
优选的,所述干扰图层中随机字符随机分布。
本申请实施例提供的技术方案可以包括以下有益效果:将验证码包含在基础静态图层中,并生成多个干扰图层,干扰图层中包含随机字符,将每个干扰图层与基础静态图层合并成复合帧,得到多个复合帧,再为多个复合帧预设帧速以生成动态验证码图片,且所述预设帧速满足视觉暂留的要求。因此动态验证码图片在动态变化时,在视觉上,虽然干扰图层中的字符呈现不断变化的状态,但验证码由于视觉暂留而保持静止不变且清楚可见,而且带随机字符的多个干扰图层能够有效防止计算机破解程序识别验证码且不妨碍人眼对验证码的识别,由此本申请实施例提供的技术方案不仅能提高验证码的安全性,而且得到的验证码人眼易识别,提高用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
根据本申请实施例的第一方面,提供一种动态验证码图片生成方法。图1为本申请一示例性实施例示出的一种动态验证码图片生成方法的流程示意图,如图1所示,所述方法包括:
步骤S101,使用随机字符生成验证码。
其中,所述随机字符为随机生成的数字、字母或中文汉字等,也可以为数字、字母或中文汉字的任意组合。由于在终端上输入数字相对较为方便,从方便用户输入验证码的角度而言,优选使用随机数字生成验证码。
步骤S102,根据所述验证码生成基础静态图层。
其中,设置一个静态图层,在静态图层中加入所述验证码,将加入验证码的静态图层作为基础静态图层。基础静态图层可以在验证码可辨认的前提下,设置不同的背景颜色或者花纹等,同样在验证码可辨认的前提下,验证码在基础静态图层的位置可以任意分布以及设置与背景颜色不同的颜色。为了增加验证码的人眼辨识度,优选的是所述基础静态图层中字符与背景使用对比色,所述验证码的各个字符相互分离。图2为基础静态图层示例图,以随机生成的数字“4859”为验证码,数字为黑色,背景颜色为白色。
步骤S103,使用随机字符生成多个干扰图层,将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧。
其中,设置多个图层,并新生成多个随机字符,将随机字符加入该多个图层中,作为干扰图层。所述随机字符为随机生成的数字、字母或中文汉字等,也可以为数字、字母或中文汉字的任意组合。每个图层中随机字符的个数可以与验证码所包含的字符个数相同,也可以不同。将每个干扰图层与基础静态图层合并为一个复合帧,所述合并使用常规的图层合并方法。
由于所述随机字符是随机生成的,因此即使每个干扰图层中随机字符的个数与验证码所包含的字符个数相同,干扰图层中的随机字符与验证码重复的概率也极小,因而对于每个复合帧而言,不仅增加了计算机破解程序区分干扰图层中的随机字符和验证码的难度,也增加了验证码的人眼辨识度。
干扰图层的个数可以根据需要来设定,层数越多对计算机破解程序的干扰越大,但过多的层数也影响人眼对验证码的辨识。
如果合并后每个干扰图层中随机字符在复合帧中的位置与验证码在复合帧中的位置相同,将妨碍人眼对验证码的辨识,因此较优选的是每个干扰图层中随机字符的位置都不相同,每个图层中随机字符可以按规律分布,例如按顺时针的次序,设干扰图层有4个,第一个干扰图层中随机字符都位于干扰图层的左上角,第二个干扰图层随机字符都位于干扰图层的右上角,以此类推。优选的是,每个干扰图层中随机字符随机分布,不仅更易实现,有利于人眼对验证码的辨识,而且由于随机字符分布无规律,进一步增加了计算机破解程序破解的难度。
由于干扰图层与基础静态图层合并为复合帧。如果干扰图层的背景颜色和基础静态图层的背景颜色不同,所得到的复合帧的背景颜色可能会发生变化且导致覆盖验证码或者干扰图层中随机字符的颜色,使验证码不可辨识或者干扰图层中的随机字符不可见,但在验证码可辨识和随机字符可显示的前提下,干扰图层的背景颜色和基础静态图层的背景颜色可以不同。在一种优选的实施方式中,干扰图层的背景颜色与基础静态图层的背景颜色相同,避免复合帧的背景颜色对验证码的覆盖。在另一种优选的实施方式中,干扰图层的背景颜色与基础静态图层的背景颜色相同,且干扰图层中的随机字符与所述验证码的颜色、字体和大小相同,这样不仅使验证码的辨识度高,干扰图层中与验证码颜色、字体和大小相同的字符也更容易对计算机破解程序形成误导,增加计算机破解程序的破解难度。图3为复合帧的示例图,图中“4859”为验证码,其余数字为干扰图层中的随机字符,验证码和随机字符都是黑色宋体四号字,基础静态图层和干扰图层的背景颜色都是白色。
步骤S104,为得到的多个复合帧预设帧速以生成动态验证码图片。
其中,所述合并可以使用常规的用于生成动态图片的帧合并方法,例如生成gif图片的帧合并方法。为每个复合帧预设帧速,并将设定了帧速的多个复合帧合并,其中,所有复合帧中的验证码完全重叠,所述帧速预先设定,并满足视觉暂留的要求。设定了帧速的每一复合帧可以在显示设备上按照帧速进行显示和隐藏,从而在显示设备上形成时而显示时而消失的动态变化视图,即复合帧以预设的帧速进行动态显示。由于每个复合帧中都包含完全重叠的基础静态图层,且帧速满足视觉暂留的要求,因此当生成的动态验证码图片动态变化时,视觉上验证码是保持静止的,而由于每个复合帧的干扰图层中的随机字符不同,随机字符的位置也不同,因此随机字符不会形成视觉暂留,虽然视觉上验证码上有不断变化的字符,但不会影响验证码的辨识。为满足视觉暂略的要求,使验证码在视觉上静止,每个复合帧预先设定的帧速相等,且所述帧速为0.05~0.2s,优选为1s,预设的帧速为1s时,视觉暂留的效果最佳,视觉上验证码不会模糊。
另一方面,由于生成的动态验证码图片由多个复合帧合并而成,因而能够有效地防止针对单帧图片进行破解的计算机破解程序识别出验证码。
本申请实施例提供的动态验证码图片生成方法,所生成的动态验证码图片动态变化时,视觉上,验证码静止不动可清楚辨认,干扰图层中的随机字符则不断闪现,干扰图层中的随机字符能够干扰计算机破解程序,增加验证码的安全性,同时对验证码本身不需进行干扰处理,验证码辨识度高,方便用户快速识别验证码,提高验证码输入的正确性。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,并存储在一个存储介质中,包括若干指令用以使得一台智能设备执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储数据和程序代码的介质。
相应于本申请实施例的第一方面,根据本申请实施例的第二方面,提供一种动态验证码图片生成装置。图4为本申请一示例性实施例示出的一种动态验证码图片生成装置的框图。如图4所示,所述装置包括:
验证码生成模块U401,用于使用随机字符生成验证码;
基础静态图层生成模块U402,用于根据所述验证码生成基础静态图层;
复合帧生成模块U403,用于使用随机字符生成多个干扰图层,将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧;
动态验证码图片生成模块U404,用于为得到的多个复合帧预设帧速以生成动态验证码图片。
其中,基础静态图层生成模块U402设置一个静态图层,在静态图层中加入所述验证码,生成基础静态图层。为了增加验证码的人眼辨识度,优选的是验证码生成模块U401将所述基础静态图层中字符与背景设置为对比色,且所述验证码的各个字符相互分离。
其中,所述复合帧生成模块U403,可以包括:
干扰图层生成子模块,用于使用随机字符生成多个干扰图层;
帧合成子模块,用于将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧。
其中,干扰图层生成子模块设置多个图层,将随机字符加入图层中,生成干扰图层。较优选的是每个干扰图层中随机字符的位置都不相同,每个图层中随机字符可以按规律分布。优选的是,每个干扰图层中随机字符随机分布。在一种优选的实施方式中,干扰图层的背景颜色与基础静态图层的背景颜色相同,避免复合帧的背景颜色对验证码的覆盖。在另一种优选的实施方式中,干扰图层的背景颜色与基础静态图层的背景颜色相同,且干扰图层中的随机字符与所述验证码的颜色、字体和大小相同,从而提高验证码的辨识度高,增加计算机破解程序的破解难度。所述帧合成子模块使用常规的图层合并方法合并干扰图层和基础静态图层。
其中,动态验证码图片生成模块U404,使用预设的帧速合并所述多个复合帧,所述预设的帧速满足视觉暂留的要求,从而使验证码能够在动态验证码图片进行动态变化时形成视觉暂留,视觉上验证码为静止。为满足视觉暂留的要求,所述预设的帧速为0.05~0.2s,优选为1s,预设的帧速为1s时,视觉暂留的效果最佳。动态验证码图片生成模块U404可以使用常规的用于生成动态图片的帧合并方法,将所述多个复合帧以预设的帧速合并为动态验证码图片。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者逆序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、装置或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、装置或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。