一种动态验证码生成方法及装置制造方法及图纸

技术编号:11593899 阅读:102 留言:0更新日期:2015-06-11 02:28
本发明专利技术实施例公开了一种动态验证码生成方法及装置,方法包括:预先随机生成验证码背景,将生成的验证码背景存储在环形缓冲区中;在接收到动态验证码生成请求之后,确定所要使用的验证码字符组,从环形缓冲区中随机选择M个验证码背景,生成N个带有所选择的验证码背景的帧图像;将所确定的验证码字符组划分为N个部分;将所划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中;根据绘制完验证码字符组N个部分的N帧图像,生成动态验证码。应用本发明专利技术实施例,接收到动态验证码生成请求后直接从环形缓冲区中选取验证码背景,生成动态验证码无需花费时间等待验证码背景的生成,减少了动态验证码的生成时间。

【技术实现步骤摘要】

本专利技术涉及数据处理
,特别涉及一种动态验证码生成方法及装置
技术介绍
验证码(CAPTCHA)是“CompletelyAutomated Public Turing test to tellComputers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。为了提高验证码的的验证作用,防止黑客的破解,通常情况下,对验证码的随机性要求较高。验证码包括静态验证码和动态验证码,目前应用最广泛的是动态验证码;动态验证码由若干帧图像组成,每一帧图像均包含验证码背景和部分验证码字符。现有技术中的动态验证码生成方法是:在接收到动态验证码生成请求之后,生成验证码字符和验证码背景,生成多帧带有部分验证码字符和验证码背景的帧图像,进而利用带有生成的多帧带有部分验证码字符和验证码背景的帧图像,生成动态验证码。但是,应用上述方法生成动态验证码,动态验证码包含的多帧图像中所使用的验证码背景不完全相同,因此需要生成的验证码背景较多,进而生成验证码背景花费的时间较长。现有技术在生成验证码背景后才生成动态验证码,生成动态验证码需要花费时间等待验证码背景的生成。由于生成验证码背景时间较长,因此现有技术,生成动态验证码花费时间也较长。
技术实现思路
本专利技术实施例的目的在于提供一种动态验证码生成方法及装置,以减少动态验证码的生成时间。为达到上述目的,本专利技术实施例公开了一种动态验证码生成方法,包括:按照预设的验证码背景生成周期,随机生成验证码背景,并将生成的验证码背景按照生成时间的先后顺序依次存储在环形缓冲区中;接收动态验证码生成请求;在接收到所述动态验证码生成请求之后,确定所要使用的验证码字符组,并从所述环形缓冲区中随机选择M个验证码背景,生成N个带有所选择的验证码背景的帧图像,其中,每个帧图像中均带有且仅带有M个验证码背景中的一个验证码背景,所述M个验证码背景中的任何一个验证码背景均至少在所述N个帧图像中的一个帧图像中存在,M < N,N为预设的待生成的动态验证码的帧图像个数;将所确定的验证码字符组划分为N个部分;将所划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中;根据绘制完验证码字符组N个部分的N帧图像,生成动态验证码。较佳的,所述按照预设的验证码背景生成周期,随机生成验证码背景,包括:调用第一线程,按照预设的验证码背景生成周期,随机生成验证码背景;和/或;所述将所划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中,包括:调用第二线程,将所划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中。较佳的,所述将生成的验证码背景按照生成时间的先后顺序依次存储在环形缓冲区中,包括:将新生成的验证码背景存储在环形缓冲区的末尾。较佳的,所述确定要使用的验证码字符组,包括:从预设的验证码字符集中随机选取X个验证码字符,将所选取的X个验证码字符,确定为所要使用的验证码字符组,其中,X为预设的验证码字符组中验证码字符的数量。较佳的,生成的动态验证码,为:GIF格式的图片;或FLV格式或SWF格式的动画。为达到上述目的,本专利技术实施例公开了一种动态验证码生成装置,包括:验证码背景生成模块、验证码背景存储模块、请求接收模块、字符组确定模块、帧图像生成模块、划分模块、绘制模块和动态验证码生成模块,其中,所述验证码背景生成模块,用于按照预设的验证码背景生成周期,随机生成验证码背景;所述验证码背景存储模块,用于将所述验证码背景生成模块生成的验证码背景按照生成时间的先后顺序依次存储在环形缓冲区中;所述请求接收模块,用于接收动态验证码生成请求;所述字符组确定模块,用于在所述请求接收模块接收到所述动态验证码生成请求之后,确定所要使用的验证码字符组;所述帧图像生成模块,用于在所述请求接收模块接收到所述动态验证码生成请求之后,从所述环形缓冲区中随机选择M个验证码背景,生成N个带有所选择的验证码背景的帧图像,其中,每个帧图像中均带有且仅带有M个验证码背景中的一个验证码背景,所述M个验证码背景中的任何一个验证码背景均至少在所述N个帧图像中的一个帧图像中存在,M ^ N, N为预设的待生成的动态验证码的帧图像个数;所述划分模块,用于将所述字符组确定模块确定的验证码字符组划分为N个部分;所述绘制模块,用于将所述划分模块划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中;所述动态验证码生成模块,用于根据所述绘制模块绘制完验证码字符组N个部分的N帧图像,生成动态验证码。较佳的,所述验证码背景生成模块,具体用于:调用第一线程,按照预设的验证码背景生成周期,随机生成验证码背景;和/ 或;所述绘制模块,具体用于:调用第二线程,将所述划分模块划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中。较佳的,所述验证码背景存储模块,具体用于:将所述验证码背景生成模块新生成的验证码背景存储在环形缓冲区的末尾。较佳的,所述字符组确定模块,具体用于:在所述请求接收模块接收到动态验证码生成请求之后,从预设的验证码字符集中随机选取X个验证码字符,将所选取的X个验证码字符,确定为所要使用的验证码字符组,其中,X为预设的验证码字符组中验证码字符的数量。较佳的,所述动态验证码生成模块,具体用于:根据所述绘制模块绘制完验证码字符组N个部分的N帧图像,生成GIF格式的图片;或根据所述绘制模块绘制完验证码字符组N个部分的N帧图像,生成FLV格式或SWF格式的动画。由上述的技术方案可见,本专利技术实施例提供了一种动态验证码生成方法及装置,应用本专利技术实施例,可以周期性地随机生成验证码背景并存储在环形缓冲区中,当接收到动态验证码生成请求后,从环形缓冲区中随机选取验证码背景使用即可。由于接收到动态验证码生成请求后直接从环形缓冲区中选取验证码背景,因此生成动态验证码无需花费时间等待验证码背景的生成,减少了动态验证码的生成时间。同时,保证了随机性,这是由于:第一、随机生成验证码背景;第二、随机选取验证码背景;第三、验证码背景在环形缓冲区中会进行更新,环形缓冲区中存储的生成时间最早的验证码背景会被新生成的验证码背景覆盖。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种动态验证码生成方法的流程示意图;图2为本专利技术实施例提供的一种动态验证码生成装置的结构示意图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面通过具体实施例,对本专利技术进行详细说明。图1为本专利技术实施例提供的一种动态验证码生成方法的流程示意图;可以包括:SlOl:按照预设的验证码背景生成周期本文档来自技高网...

【技术保护点】
一种动态验证码生成方法,其特征在于,包括:按照预设的验证码背景生成周期,随机生成验证码背景,并将生成的验证码背景按照生成时间的先后顺序依次存储在环形缓冲区中;接收动态验证码生成请求;在接收到所述动态验证码生成请求之后,确定所要使用的验证码字符组,并从所述环形缓冲区中随机选择M个验证码背景,生成N个带有所选择的验证码背景的帧图像,其中,每个帧图像中均带有且仅带有M个验证码背景中的一个验证码背景,所述M个验证码背景中的任何一个验证码背景均至少在所述N个帧图像中的一个帧图像中存在,M≤N,N为预设的待生成的动态验证码的帧图像个数;将所确定的验证码字符组划分为N个部分;将所划分的验证码字符组的N个部分分别绘制在所生成的带有验证码背景的N帧图像中;根据绘制完验证码字符组N个部分的N帧图像,生成动态验证码。

【技术特征摘要】

【专利技术属性】
技术研发人员:尹非凡
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1