本发明专利技术涉及一种基于隐含图形的验证码生成方法,包括:S1:预设M张的大图形,每张隐含有N个子图形;S2:从每张大图形N个子图形中提取n个子图形,并对这些子图形预处理;S3:从大图形中随机选取J张图形以及对应预处理后的K张子图形;S4:根据随机得到预处理后的K张子图形,随机选取k个子图形作为验证码;S5:将得到的k个子图形编号系列设为S0;S6:输出已选取的k个验证码到前端,同时记录这k个验证码的输出顺序S1;S7:将J张大图形输出到前端S8:设置点选隐含子图形的规则;S9:记录用户点选的验证码的输入和点选顺序,并生成输入系列S0’和顺序序列S1’;S10:分别比较S0与S0’的值以及S1与S1’的值,判断用户输入的验证码是否正确。
【技术实现步骤摘要】
基于隐含图形的验证码生成方法
本专利技术涉及一种基于隐含图形的验证码生成方法。
技术介绍
目前验证码所使用的技术分为以下几种1.验证码生成技术:(1).文本验证码,(2).图像验证码,(3).音频验证码,(4).视频验证码,(5).上述综合技术2.用于增强验证码防破解能力的技术:(1).字符粘连技术,(2).字符扭曲变形技术,(3).背景干扰技术3.验证码输入技术:(1).用户手动输入,(2).点选输入(3).拖曳输入由于音频和视频验证码用于比较特殊的一些场合,并且对带宽的要求较高,所以用得较少,目前普遍使用的为文本验证码和图像验证码,这两种验证码又以文本验证码使用得最多。文本验证码生成及使用较容易,但同样较易为机器所识别,机器可以通过字符切割,机器学习等方式进行破解,对网站起不到很好的保护作用。为此,使用了一些验证码增强技术,如字符粘连,变形及增加干扰背景等技术来防止验证码被机器自动识别,虽然这些干扰技术对机器的自动识别取到很好的防护作用,但同时也给人的识别增加了较大的难度。除此之外,文本验证码绝大多数采用了用户手动输入的方式,对于复杂一点的文本字符,会对很多用户造成不能正常输入的困扰,所以文本验证码使用的字符数量有限,通常只用到了0-9、a-z及A-Z这些常用的少量的字符;由于这些字符数量极其有限,机器可以较容易地通过机器学习的方式来提高对该类验证码的自动识别率。对于图像验证码,机器通过OCR技术较易自动识别,如果加入了过多的干扰技术,虽然会对机器的自动识别造成干扰,但也会对人的识别造成较大的干扰,用户也不易识别,某购票网站就是一个较典型的例子;目前较常用的一种图形验证码方式为滑块(动)填充拼图验证码,这种验证码优点很多,但对于滑动操作要求较精确,对于滑动操作不够灵活的用户较易验证失败,操作方便性不如点选输入,当然点选输入方式也有个较大的缺点,如果选项较少的话,较容易被暴力破解。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种基于隐含图形的验证码生成方法,解决现有技术中机器自动识别与用户识别相矛盾以及验证码输入不够方便的问题。为实现上述目的,本专利技术采用如下技术方案:一种基于隐含图形的验证码生成方法,包括以下步骤:步骤S1:预设M张的大图形,每张隐含有N个子图形;步骤S2:从每张大图形N个子图形中提取n个子图形,并对这些子图形预处理;步骤S3:从大图形中随机选取J张图形以及对应预处理后的K张子图形,其中步骤S4:根据随机得到预处理后的K张子图形,随机选取k个子图形作为验证码;步骤S5:将得到的k个子图形编号系列设为S0;步骤S6:输出已选取的k个验证码到前端,同时记录这k个验证码的输出顺序S1;步骤S7:将J张大图形输出到前端,以备用户在大图形上点选子图形以进行验证码的输入;步骤S8:设置点选隐含子图形的规则;步骤S9:记录用户点选的验证码的输入和点选顺序,并生成输入系列S0’和顺序序列S1’;步骤S10:分别比较S0与S0’的值以及S1与S1’的值,判断用户输入的验证码是否正确。进一步的,所述预处理包括对子图形进行命名及图形化处理。其中命名方式可以使用多种语言,可以是中文命名,也可以是其它的语言,图形化处理可以为子图形进行放大,缩小、扭曲翻转等各种变形;进一步的,所述k个验证码输出的形式可以是子图形或对应子图形的命名或子图形和子图形名称的混合。进一步的,所述步骤S8具体为:设置点选隐含子图形的规则,可设置为按顺序点选或任意点选大图形中的子图形。进一步的,所述步骤S10具体为:步骤S101:分别比较S0与S0’的值以及S1与S1’的值;步骤S102:在任意点选规则下,若S0=S0’则说明用户输入的验证码正确,通过验证,否则说明输入有误,验证不通过;若设置为按顺序点选规则,需同时S0=S0’和S1=S1’,若满足则说明输入的顺序正确,通过验证,否则不通过。本专利技术与现有技术相比具有以下有益效果:本专利技术解决了防止验证码被机器自动识别以及方便用户输入的问题,使用图像隐含技术,可以有效的防止机器通过OCR识别或机器学习等技术进行识别;同时,采用点选的方式进行验证码的输入,输入方便,易用性好。也可以在降低用户识别难度的情况下,通过在大图上的设定候选验证码的颜色,以便让用户较轻松的识别大图中的子图形,方便用户识别验证码和输入验证码。附图说明图1是本专利技术一实施例中隐含有子图形的大图形图2是本专利技术一实施例中全文字验证码图3是本专利技术一实施例中不同语言的全文字验证码图4是本专利技术一实施例中全子图形验证码图5是本专利技术一实施例中子图形与文字的混合验证码图6是本专利技术一实施例中部分变形的子图形验证码图7是本专利技术一实施例中用于验证码输入的大图形图8是本专利技术一实施例中按顺序点选大图规则的验证码图9是本专利技术一实施例中任意顺序点选大图规则的验证码图10是本专利技术一实施例中子图形预处理。具体实施方式下面结合附图及实施例对本专利技术做进一步说明。本专利技术提供一种基于隐含图形的验证码生成方法,步骤S1:如图1所示,预设M张的大图形,每张隐含有N个子图形;本实施例大图形为一张来自网络的《隐藏的图画》的图形,图中隐含了13个子图形,标出的部分为子图形。步骤S2:对这些子图形进行命名及单个图形化处理,其中命名方式可以使用多种语言,可以是中文命名,也可以是其它的语言,子图形也可以经过各种变形。对图1中的13个子图形进行命名和单个图形化处理,命名和单个图形化如图10如示:步骤S3:从大图形中随机选取J张图形以及对应的K张子图形和这些子图形的命名。本实施例中只有一张大图形所以J=1,K=13;步骤S4:从K张子图形中随机选取k个子图形作为验证码。本实施例中取k=3,分别是第1个子图形棒棒糖、第3个子图形梨以及第7个子图形鱼共3个子图形,,这3张子图形作为验证码。步骤S5:对已选取的k个子图形进行编号,编号系列设为S0;本实施例中将每个子图形的序号所对应的位置初始都置为0,所以S0的初始S0=0000000000000,当取k=3时,S0中的3位要置1,第1,3,7个子图形选为验证码则S0中的第1,3,7位都置为1,此时S0=1010001000000。步骤S6:输出已选取的k个验证码到前端,这些验证输出的形式可以是子图形或对应子图形的名称或子图形和子图形名称的混合,同时记录这k个验证码的输出顺序S1。本实施例中的3个验证码可以是全文字(如图2,3所示)、全图形(如图4所示)、图形与文字的混合(如图5所示)以及部分或全部变形的图形(如图6所示)。验证码的输出顺序S1=010307。步骤S7:输出J张大图形到前端,以备用户在大图形上点选子图形以进行验证码的输入;本实施例中只有一张大图形所以J=1。如图7所示。步骤S8:设置点选隐含子图形的规则,可设置为按顺序点选或任意点选大图形中的隐含子图形;本实施中在后台设置为按顺序点选。步骤S9:记录用户点选的验证码的输入和点选顺序,并生成输入系列S0’和顺序序列S1’;分别比较S0与S0’的值以及S1与S1’的值。在任意点选规则下如果S0=S0’则说明用户输入的验证码正确,通过验证,否则说明输入有误,验证不通过;如果设置为按顺序点选规则,还需要比较S1是否等于S1’,如果相等则说明输入的顺序正确,通过验证,否则不通过。本本文档来自技高网...
【技术保护点】
1.一种基于隐含图形的验证码生成方法,其特征在于:包括以下步骤:步骤S1:预设M张的大图形,每张隐含有N个子图形;步骤S2:从每张大图形N个子图形中提取n个子图形,并对这些子图形预处理;步骤S3:从大图形中随机选取J张图形以及对应预处理后的K张子图形,其中
【技术特征摘要】
1.一种基于隐含图形的验证码生成方法,其特征在于:包括以下步骤:步骤S1:预设M张的大图形,每张隐含有N个子图形;步骤S2:从每张大图形N个子图形中提取n个子图形,并对这些子图形预处理;步骤S3:从大图形中随机选取J张图形以及对应预处理后的K张子图形,其中步骤S4:根据随机得到预处理后的K张子图形,随机选取k个子图形作为验证码;步骤S5:将得到的k个子图形编号系列设为S0;步骤S6:输出已选取的k个验证码到前端,同时记录这k个验证码的输出顺序S1;步骤S7:将J张大图形输出到前端,以备用户在大图形上点选子图形以进行验证码的输入;步骤S8:设置点选隐含子图形的规则;步骤S9:记录用户点选的验证码的输入和点选顺序,并生成输入系列S0’和顺序序列S1’;步骤S10:分别比较S0与S0’的值以及S1与S1’的值,判断用户输入的验证码是否正确。2.根据权利要求1所...
【专利技术属性】
技术研发人员:曾党泉,
申请(专利权)人:厦门大学嘉庚学院,
类型:发明
国别省市:福建,35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。