CN107784219B - 一种字符验证码实现方法、装置及终端 - Google Patents

一种字符验证码实现方法、装置及终端 Download PDF

Info

Publication number
CN107784219B
CN107784219B CN201610722930.7A CN201610722930A CN107784219B CN 107784219 B CN107784219 B CN 107784219B CN 201610722930 A CN201610722930 A CN 201610722930A CN 107784219 B CN107784219 B CN 107784219B
Authority
CN
China
Prior art keywords
character
piecemeal
verifying
candidate characters
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610722930.7A
Other languages
English (en)
Other versions
CN107784219A (zh
Inventor
徐远朝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610722930.7A priority Critical patent/CN107784219B/zh
Publication of CN107784219A publication Critical patent/CN107784219A/zh
Application granted granted Critical
Publication of CN107784219B publication Critical patent/CN107784219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/36User authentication by graphic or iconic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2133Verifying human interaction, e.g., Captcha
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/32Indexing scheme for image data processing or generation, in general involving image mosaicing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • User Interface Of Digital Computer (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明提出一种字符验证码实现方法、装置以及终端,基于对字符的选取、分块、生成和打乱次序形成验证字符,基于字符块容器和绝对定位技术,形成基于字符的候选字符块组,并基于候选字符块组对验证字符的拼合实现字符验证码的验证。本发明的验证过程中无需依赖图片分割、图片存储和图片传输,在很大程度上节约系统资源和通讯资源。多个验证难度等级,能够满足不同的验证需求。字符验证码选择范围大,减小了被恶意破解的可能,安全程度高。

Description

一种字符验证码实现方法、装置及终端
技术领域
本发明涉及计算机技术领域,具体地,涉及一种字符验证码实现方法、装置及终端。
背景技术
在互联网中,以常见的帐号登录为例,用户在输入帐号后,一般需要输入验证码(CAPTCHA,Completely Automated Public Turing test to tell Computers and HumansApart),验证码主要用来自动化区分计算机和人类,它被绝大多数互联网服务(如论坛、微博等)用来规避安全风险(主要是业务安全方面的风险,如恶意破解密码、刷票、论坛灌水等)。
目前,验证码主要分为两类:字符式验证码和图片式验证码。其中,字符式验证码是采用提问题的形式,让用户输入对应问题的正确答案,一般字符问题式的验证码会在验证码出现的地方给出适当的提示,甚至直接给出问题的答案。对于图片式验证码,则是让用户查看服务下发的图片,选择与图片相关图片或者对图片进行拼图等操作。
发明内容
发明人在使用和研究过程中发现,不论是文字拼图还是图片拼图都需要把图片先分割成零碎的几块,然后再拖拽拼在一起完成拼图。这涉及到将大图片切割成小图片,并将图片分组存储等技术,需要占用较多的存储空间。在验证过程中,服务器发送验证图片,需要占用较大的网络资源。由于图片库有限,这种方式更容易破恶意破解,安全性较低。
出于发明人发现的上述问题,本申请提出一种基于绝对定位技术的字符验证码实现方法、装置及终端。
一种字符验证码实现方法,所述方法包括:选择验证字符,对所述验证字符分块;根据所述分块,生成多个候选字符,打乱所述候选字符的排列顺序;设置字符块容器大小;将所述候选字符按照与所述字符分块对应的位置分别固定于所述字符块容器,检测所述字符是否超出字符块容器大小,若是则隐藏超出部分,形成候选字符块;生成所述验证字符的效果图;验证用户使用所述候选字符块对所述效果图的填充结果。
优选地,所述字符块容器的大小与所述字符分块相同。
优选地,将所述候选字符按照M x N分块矩阵进行分块,所述M、N为自然数,且M、N不同时为1。
优选地,所述矩阵为2x2矩阵或3x3矩阵。
优选地,所述候选字符组为所述分块数量的验证字符的集合。
优选地,所述候选字符组为所述分块数量的验证字符和至少一个混淆字符的集合。
优选地,所述验证字符和所述混淆字符随机选自通用字符库。
优选地,使用随机函数打乱所述候选字符组的顺序。
优选地,所述字符块容器的大小与所述字符分块相同。
优选地,所述生成验证字符的效果图包括倾斜或扭曲所述效果图。
优选地,验证用户使用所述候选字符块对所述效果图的填充结果包括验证用户填充结果与所述验证字符分块是否对应。
优选地,所述用户使用所述候选字符块对所述效果图的填充结果为一结果矩阵,所述验证包括验证所述结果矩阵与所述分块矩阵是否对应。
优选地,如果对应正确,则通过验证;如对应错误,则验证失败。
优选地,如果验证失败,则更换新的验证字。
本发明还提出一种字符验证码实现装置,包括如下模块:选择模块,用于选择验证字符;分块模块,用于对所述验证字符分块;字符组形成模块,用于根据所述分块,生成多个候选字符;随机排序模块,用于打乱所述候选字符的排列顺序;字符块容器设置模块,用于设置字符块容器大小;候选字符块形成模块,用于使用绝对定位技术将所述候选组中的字符按照字符分块固定于所述字符块容器,检测所述字符是否超出字符块容器大小,若是则隐藏超出部分,形成候选字符块;效果图生成模块,用于生成验证字符的效果图;验证模块,用于验证用户使用所述候选字符块对所述效果图的填充结果。
优选地,所述字符块容器的大小与所述字符分块相同。
优选地,所述分块模块,将所述候选字符按照M x N分块矩阵进行分块,所述M、N为自然数,且M、N不同时为1。
优选地,所述矩阵为2x 2矩阵或3x 3矩阵。
优选地,所述候选字符块形成模块形成的所述候选字符组为所述分块数量的验证字符的集合。
优选地,所述候选字符块形成模块形成的所述候选字符组为所述分块数量的验证字符和至少一个混淆字符的集合。
优选地,所述候选字符块形成模块形成的所述验证字符和所述混淆字符随机选自通用字符库或者符号库。
优选地,所述随机排序模块,包含随机函数生成模块,用于生成随机函数打乱所述候选字符组的顺序。
优选地,所述字符块容器设置模块,将所述字符块容器的大小设置为与所述字符分块相同。
优选地,所述效果图生成模块,还用于倾斜或扭曲所述效果图。
优选地,所述验证模块,验证用户使用所述候选字符块对所述效果图的填充结果与所述验证字符分块是否对应。
优选地,所述验证模块验证所述结果矩阵与所述分块矩阵是否对应,所述结果矩阵为所述用户使用所述候选字符块对所述效果图的填充结果。
优选地,如果对应正确,则通过验证;如对应错误,则验证失败。
优选地,如果验证失败,则更换新的验证字。
本发明还提出一种终端,包含前述的装置。
本发明具有如下有益效果:
1、本发明的验证过程中无需依赖图片分割、图片存储和图片传输,在很大程度上节约系统资源和通讯资源。
2、本发明具有多个验证难度等级,能够满足不同的验证需求。
3、本发明的字符验证码选择范围大,减小了被恶意破解的可能,安全程度高。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明;
图1是本发明实施一、二提供的方法流程图。
图2是本发明实施例三提供的装置模块图。
图3是本发明实施例三提供的基于网络传输的验证模式。
图4是本发明实施例三提供的基于本地的验证模式。
图5是本发明实施例四提供的验证过程以及验证结果为成功的示意图。
图6是本发明实施例四提供的验证结果为失败的示意图。
图7是本发明实施例四提供的加入混淆字符验证过程示意图。
图8是本发明实施例四提供的加入混淆字符和扭曲效果的验证过程示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
实施例一:
在本实施例中提出一种不依赖图片,而直接基于字符的CSS分块技术实现对字符拼合以达到验证的目的。
一种基于页面绝对定位技术的字符验证方法,如图1所示,包括如下步骤:
步骤S101,选择验证字符,对所述验证字符分块。
验证字符随机选自字符库,相对于传统的图片验证方式,字符库中的每一个字符都可以作为验证码使用,这实现了验证码的可选择范围的扩容,提高了验证码的随机性,使验证码不易被传统的方式破解。在验证过程中,服务器与终端之间只需要发送验证字符的通讯费用,避免了传统的验证方法中需要发送待验证图片的分割图,这可以极大地节约验证过程中所耗费的传输资源。
可以根据对验证码要求的复杂程度对验证字符进行分块,在一个实施例中选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。
在一个实施例中选择对验证字符按照“九宫格”(3x3分块),即将汉字按照左上、左中、左下、中上、中、中下、右上、右中、右下分为九个大小相等的方块。
在一些需要复杂验证码的场合,还可以使用诸如4x4分块、5x5分块、...、nxn分块这样的等行列矩阵分块方式。
当然,验证字符还可以按照其他形式分块,例如1x4分块,验证字符被纵向分割为4条;2x4分块,验证字符被分割为8条等等。
总体来说,验证字符的分块遵循M x N矩阵形式分块,所述M、N为自然数,且M、N不同时为1。
步骤S102,根据所述分块,生成一定数量的候选字符,打乱所述候选字符的顺序。
在本实施例中,生成候选字符数量与所述验证字符的分块数量相同,并且候选字符仅包括验证字符。验证字符选自通用字符库包含:各种语言字符库,如简体、繁体汉字,希腊拉丁文,韩语,日语或者符号等等。这样还能满足不同语言文化者对于验证的需求,例如在中国范围内使用选择汉字作为验证字符,韩国人使用韩文字符验证。符号也可以作为验证字符使用。
例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。对应地,生成候选字符的分块数量为2x2=4个验证字符,4个验证字符分别对应左上、左下、右上、右下四个分块。
例如,选择对验证字符按照“九宫格”(3x3分块),即将汉字按照左上、左中、左下、中上、中、中下、右上、右中、右下分为九个大小相等的方块。对应地,生成候选字符的分块数量为3x3=9个验证字符,9个验证字符分别对应左上、左中、左下、中上、中、中下、右上、右中、右下九个分块。
在验证过程中,分块被打乱为随机位置,并且打乱后的位置被记录,例如,对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。其初始位置可由一个二维矩阵的形式:
在打乱位置之后,呈现给用户的顺序为该四个位置的一个随机排列组合,例如[A21,A11,A22,A12]等。
对验证字符按照“九宫格”(3x3分块),9个验证字符分别对应左上、左中、左下、中上、中、中下、右上、右中、右下九个分块。其初始位置可由一个二维矩阵的形式:
在打乱位置之后,呈现给用户的顺序为该九个位置的一个随机排列组合,例如[A21,A33,A31,A11,A22,A12,A23,A13,A32,A23]等。
对验证码1x3分块,验证字符被纵向分割为3条,其初始位置可由一个二维矩阵的形式:
[A1 A2 A3]
在打乱位置之后,呈现给用户的顺序为该三个位置的一个随机排列组合,例如[A3,A2,A1]等。
打乱位置顺序后,该验证码会形成一个数组,并发送给用户。在用户端,则会根据数组形成对应数量和位置的验证字符。
步骤S103,设置字符块容器大小,超过所述字符块容器部分的字符将被隐藏。
在本实施例中,字符块容器用于将字符按照预定分块显示给用户,因此,其大小根据字符分块来设定。
例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。对应地,字符块容器为按照2x2分块分割为4块的验证字符大小。
例如,选择对验证字符按照“九宫格”(3x3分块),对应地,字符块容器为按照3x3分块分割为9块的验证字符大小。
对验证码1x3分块,验证字符被纵向分割为3条,对应地,字符块容器为按照1x3分块分割为3块的验证字符大小。
字符块容器的属性是非常重要的,在本实施例中,超出字符块容器的字符部分被隐藏,即不可见,也不可被选中,这样操作过程中,用户将只对字符块容器内的内容进行操作。
步骤S104,使用绝对定位技术将所述候选字符按照字符分块固定于所述字符块容器,形成候选字符块。
验证字符将在字符块容器内以绝对定位的方式加以定位。例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。对应地,生成候选字符的分块数量为2x2=4个验证字符,4个验证字符分别对应左上、左下、右上、右下四个分块。对应地,字符块容器为按照2x2分块分割为4块的验证字符大小。
对应左上的验证字符,按照绝对定位方式将左上部分定位于所述字符块容器内,剩余部分由于字符块容器属性被隐藏,呈现给用户的是该验证字符的左上部分。
依此类推,剩余3个验证字符分别按照其对应的字符块部分呈现给用户左下、右上和右下。
由于顺序被打乱,这些字符块呈现的顺序也是随机的,以[A21,A11,A22,A12]顺序为例,呈现给用户的是候选验证字符的左下、左上、右下和右上,即候选字符块。
步骤S105,生成验证字符的效果图,待用户将所述候选字符块分别拖拽入所述效果图中,比对验证结果。
客户端会根据验证字符生成验证字符的效果图,用户则需要将候选字符的字符块根据效果图加以验证。这里用户可以采取拖拽的方式,或者点选的方式等等,候选字符的字符块会“填充”到效果图中。待填充完毕后,将结果发送,并加以比对和验证。
例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。由于顺序被打乱,这些字符块呈现的顺序也是随机的,以[A21,A11,A22,A12]顺序为例,用户验证后,正确的验证顺序应该是:
当用户错误地选择时,例如用户将右上字块错误地拖拽到了右下则,其验证结果为
这是一个错误的验证结果。
在验证过程中,根据分块矩阵的元素不同,验证难度会有所不同,分块矩阵的阶数越高,验证难度越大。
实施例二:
在上一个实施例中,服务器端将正确的验证字符发送给用户,而实际上,在验证过程中,还可以加入混淆字符,那么在验证过程中,用户不仅仅需要注意字符的结构,还要注意排除错误的验证字符。
一种基于页面绝对定位技术的字符验证方法,包括如下步骤:
步骤S201,选择候选字符,对所述候选字符分块。
验证字符随机选自字符库,相对于传统的图片验证方式,字符库中的每一个字符都可以作为验证码使用,这实现了验证码的可选择范围的扩容,提高了验证码的随机性,使验证码不易被传统的方式破解。在验证过程中,服务器与终端之间只需要发送验证字符的通讯费用,避免了传统的验证方法中需要发送待验证图片的分割图,这可以极大地节约验证过程中所耗费的传输资源。
可以根据对验证码要求的复杂程度对验证字符进行分块,在一个实施例中选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。
在一个实施例中选择对验证字符按照“九宫格”(3x3分块),即将汉字按照左上、左中、左下、中上、中、中下、右上、右中、右下分为九个大小相等的方块。
在一些需要复杂验证码的场合,还可以使用诸如4x4分块、5x5分块、...、nxn分块这样的等行列矩阵分块方式。
当然,验证字符还可以按照其他形式分块,例如1x4分块,验证字符被纵向分割为4条;2x4分块,验证字符被分割为8条等等。
总体来说,验证字符的分块遵循M x N矩阵形式分块,所述M、N为自然数,且M、N不同时为1。当然,在本实施例中,验证字符和混淆字符保持相同的分块方式。
步骤S202,根据所述分块,生成一定数量的候选字符,打乱所述候选字符的顺序。
在本实施例中,候选字符将包括验证字符和混淆字符,生成候选字符数量将大于所述验证字符的分块数量相同。验证字符选自通用字符库包含:各种语言字符库,如简体、繁体汉字,希腊拉丁文,韩语,日语或者符号等等。这样还能满足不同语言文化者对于验证的需求,例如在中国范围内使用选择汉字作为验证字符,韩国人使用韩文字符验证。符号也可以作为验证字符使用。
例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。对应地,生成候选字符的分块数量为将大于4个验证字符,除4个验证字符分别对应左上、左下、右上、右下四个分块,还包含若干随机选择于字符库的混淆字符。
例如,选择对验证字符按照“九宫格”(3x3分块),即将汉字按照左上、左中、左下、中上、中、中下、右上、右中、右下分为九个大小相等的方块。对应地,生成候选字符的分块数量为将大于9个验证字符,除9个验证字符分别对应左上、左中、左下、中上、中、中下、右上、右中、右下九个分块,还包含若干随机选择于字符库的混淆字符。
在验证过程中,分块被打乱为随机位置,并且打乱后的位置被记录,例如,对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。其初始位置可由一个二维矩阵的形式:
在打乱位置之后,呈现给用户的顺序为该四个位置的验证字符以及若干混淆字符的一个随机排列组合,例如[A21,B11,A11,A22,A12,B12],该数组中,B11和B12分别表示混淆字符B的左上和左下。
加入的混淆字符可以是不只一个,例如[A21,B11,A11,A22,A12,B12,C11],该数组中,B11和B12分别表示混淆字符B的左上和左下,C11表示混淆字符C的左上。
加入混淆字符并打乱位置顺序后,该验证码会形成一个数组,并发送给用户。在用户端,则会根据数组形成对应数量和位置的候选字符。
步骤S203,设置字符块容器大小,超过所述字符块容器部分的字符将被隐藏。
在本实施例中,字符块容器用于将字符按照预定分块显示给用户,因此,其大小根据字符分块来设定。
例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。对应地,字符块容器为按照2x2分块分割为4块的验证字符大小。
例如,选择对验证字符按照“九宫格”(3x3分块),对应地,字符块容器为按照3x3分块分割为9块的验证字符大小。
对验证码1x3分块,验证字符被纵向分割为3条,对应地,字符块容器为按照1x3分块分割为3块的验证字符大小。
字符块容器的属性是非常重要的,在本实施例中,超出字符块容器的字符部分被隐藏,即不可见,也不可被选中,这样操作过程中,用户将只对字符块容器内的内容进行操作。
步骤S204,使用绝对定位技术将所述候选字符按照字符分块固定于所述字符块容器,形成候选字符块。
验证字符将在字符块容器内以绝对定位的方式加以定位。例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。对应地,生成候选字符的分块数量为2x2=4个验证字符,4个验证字符分别对应左上、左下、右上、右下四个分块。对应地,字符块容器为按照2x2分块分割为4块的验证字符大小。
对应左上的验证字符,按照绝对定位方式将左上部分定位于所述字符块容器内,剩余部分由于字符块容器属性被隐藏,呈现给用户的是该验证字符的左上部分。
依此类推,剩余3个验证字符分别按照其对应的字符块部分呈现给用户左下、右上和右下。
由于顺序被打乱,这些字符块呈现的顺序也是随机的,以[A21,A11,A22,A12]顺序为例,呈现给用户的是候选验证字符的左下、左上、右下和右上,即候选字符块。
而在加入混淆字符之后,以[A21,B11,A11,A22,A12,B12]顺序为例,该数组中,B11和B12分别表示混淆字符B的左上和左下,呈现给用户的是候选验证字符的左下、混淆字符B的左上、验证字符的左上、验证字符的右下、验证字符的右上、混淆字符B的左下。
步骤S105,生成验证字符的效果图,待用户将所述候选字符块分别拖拽入所述效果图中,比对验证结果。
客户端会根据验证字符生成验证字符的效果图,用户则需要将候选字符的字符块根据效果图加以验证。这里用户可以采取拖拽的方式,或者点选的方式等等,候选字符的字符块会“填充”到效果图中。待填充完毕后,将结果发送,并加以比对和验证。
例如,选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。由于顺序被打乱,这些字符块呈现的顺序也是随机的,以[A21,A11,A22,A12]顺序为例,用户验证后,正确的验证顺序应该是:
当用户错误地选择时,例如用户将右上字块错误地拖拽到了右下则,其验证结果为:
这会导致验证失败。
如前所述,在打乱位置之后,呈现给用户的顺序为该四个位置的验证字符以及若干混淆字符的一个随机排列组合,例如[A21,B11,A11,A22,A12,B12],该数组中,B11和B12分别表示混淆字符B的左上和左下。加入的混淆字符可以是不只一个,例如[A21,B11,A11,A22,A12,B12,C11],该数组中,B11和B12分别表示混淆字符B的左上和左下,C11表示混淆字符C的左上。
当用户选择了混淆字符块时,例如将混淆字符B或者混淆字符C拖拽到效果图内:
这会导致验证失败。
如前所述,如果对应正确,则验证成功;如对应错误,则验证失败。
如果验证失败,则返回初始状态,或者更换新的验证字。
实施例三:
在本实施例中,将介绍验证过程中,服务器与用户终端的角色功能。
在验证过程可以是本地验证也可以服务器验证,如果验证是本地终端发生的,则在用户终端,用户终端执行:
选择候选字符,对所述候选字符分块。根据所述分块,生成一定数量的候选字符,打乱所述候选字符的顺序。根据所述候选字符分块大小设置字符块容器大小,超过所述字符块容器部分的字符将被隐藏。使用绝对定位技术将所述候选字符按照字符分块固定于所述字符块容器,形成候选字符块。生成验证字符的效果图,并比对验证结果。
如果验证过程是在用户终端和服务器端交互的,则服务器和用户终端分别执行:
服务器选择候选字符,候选字符随机选自字符库,并且根据对验证码要求的复杂程度对验证字符进行分块,在一个实施例中选择对验证字符按照“田子格”分块(2x2分块),即将汉字按照左上、左下、右上、右下分为四个大小相等的方块。
根据所述分块,生成一定数量的候选字符,打乱所述候选字符的顺序。
由于顺序被打乱,这些字符块呈现的顺序也是随机的,以[A21,A11,A22,A12]顺序为例,呈现给用户的是候选验证字符的左下、左上、右下和右上,即候选字符块。而在加入混淆字符之后,以[A21,B11,A11,A22,A12,B12]顺序为例,该数组中,B11和B12分别表示混淆字符B的左上和左下,呈现给用户的是候选验证字符的左下、混淆字符B的左上、验证字符的左上、验证字符的右下、验证字符的右上、混淆字符B的左下。
在该过程中,服务器只需发送给用户终端A、B字符和对应的数组。相对于传统的图片验证方式,字符库中的每一个字符都可以作为验证码使用,这实现了验证码的可选择范围的扩容,提高了验证码的随机性,使验证码不易被传统的方式破解。在验证过程中,服务器与终端之间只需要发送验证字符的通讯费用,避免了传统的验证方法中需要发送待验证图片的分割图,这可以极大地节约验证过程中所耗费的传输资源。
在用户端,根据所述候选字符分块大小设置字符块容器大小,超过所述字符块容器部分的字符将被隐藏。使用绝对定位技术将所述候选字符按照字符分块固定于所述字符块容器,形成候选字符块,生成验证字符的效果图。然后等待接收用户对的验证操作。
用户会将字符块通过拖拽、点选等方式填充到所述验证字符的效果图中,基于该填充操作用户终端得到各填充位置字符块的矩阵排列。例如,对于[A21,B11,A11,A22,A12,B12],用户分别将A11,A12,A21,A22填充到左上、右上、左下、右下的位置,验证矩阵为:
在用户确认后,客户端将用户验证矩阵发送到服务器,服务器会将该矩阵与对候选字符的分块矩阵进行比对,如果二者相同,则验证通过,否则验证失败。服务器会将验证结果发送到用户终端。
终端则根据服务器发送的验证结果,进行后续的操作。
实施例四:
一种基于绝对定位技术的字符验证码实现方法,包括如下步骤:
步骤S301,设置字符的html结构,并打乱字符的顺序。
字符html结构,包括字符的大小、字体、颜色、倾斜、字号等等属性。
以建立字符“课”的html结构为例,通过html语言建立t1(左上),br(右下),b1(左下),tr(右下)四个分块。
<Div class=“fragment-list”>
<Div class=“fragment-list item-t1”>
<Div class=“item-inner”>课</Div>
</Div>
<Div class=“fragment-list”>
<Div class=“fragment-list item-br”>
<Div class=“item-inner”>课</Div>
</Div>
<Div class=“fragment-list”>
<Div class=“fragment-list item-b1”>
<Div class=“item-inner”>课</Div>
</Div>
<Div class=“fragment-list”>
<Div class=“fragment-list item-tr”>
<Div class=“item-inner”>课</Div>
</Div>
在建立四个字符区块之后,打乱字符的顺序是为了,呈现给用户的字符块是顺序随机,在一些具体的实施方式中,可以使用javascript的Math.random()函数让字符块无规律出现。
Math.random()产生一个[0,1)之间的随机数,可以通过例如:
Math.random()*(N-M)+M返回指定范围(M-N)之间的随机数。
以4个分块为例,N=5,M=1,通过Math.random()*(5-1)+1,可以获得1-4之间的随机数,进而对4个分块随机排序。
步骤S302,设置字符块的容器大小,并将超过字符块容器的部分设置为隐藏。
在本实施例中,以设置4个分块为例,将字符块设置为四分之一容器大小,超过部分属性设为隐藏(overflow:hidden)。
Fragment-item{
Float:left;
Width:50px;
height:50px;
overflow:hidden;
}
步骤S303,基于绝对定位技术,将打乱顺序的字符固定于所述字符块容器内,形成字符块。
形成的字符块呈现给用户的是字符的一部分,分别为字符左上,右上,左下,右下,超过容器大小的部分被设置为隐藏。各个字符块恰好可以组合形成一个完整的字符。
.Item-inner{
Position:absolute;
}
.Item-t1.Item-inner{
Top:0;
left:0;
}
.Item-tr.Item-inner{
Top:0;
right:0;
}
.Item-b1.Item-inner{
Top:-50px;
left:0;
}
.Item-br.Item-inner{
Top:-50px;
right:0;
}
步骤S304,使用拖拽功能,将四个字符块分别拖入对应的效果图中,如对应正确,则通过验证,如对应错误则验证失败。
拖拽功能是常用系统的基本功能。例如在AS3中,可以使用StartDrag()函数实现。在Javascript中可以使用时间表示方法,例如:
(1)onmousedown+onmousemove=StartDrag()
(2)onmousedown=StopDrag()
(3)…
除拖拽功能外,使4个字符块填充入效果图还可以使用诸如点选功能等。
对于拖拽到对应位置启动比较命令以判断拖拽到对应位置的字符块是否正确,如果正确则通过验证。否则,本次验证失败。
在验证失败后,可以返回初始界面,也可以重新生成另一个汉字,重新验证。
在一些具体的实施例中,在步骤S301中加入混淆字,增大验证的难度,在增加混淆字的同时,需要对排序以及设置字符块的容器数量进行重新设置。
在一些具体的实施例中,利用CCS3的transform技术对效果图进行倾斜和扭曲,以防止使用机器人技术对验证字符进行破译。
当然,本法明的验证码方法除了可以实现对于现有图片验证码的替换外,还可以作为儿童识字工具等用途。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种字符验证码实现方法,其特征在于,所述方法包括如下步骤:
选择验证字符,对所述验证字符分块;
根据所述分块,生成多个候选字符,打乱所述候选字符的排列顺序;
设置字符块容器大小;
将所述候选字符按照与所述字符分块对应的位置分别固定于所述字符块容器,检测所述字符是否超出字符块容器大小,若是则隐藏超出部分,形成候选字符块;
生成所述验证字符的效果图;
验证用户使用所述候选字符块对所述效果图的填充结果。
2.根据权利要求1所述的方法,其特征在于,所述字符块容器的大小与所述字符分块相同。
3.根据权利要求1所述的方法,其特征在于,将所述候选字符按照M xN分块矩阵进行分块,所述M、N为自然数,且M、N不同时为1。
4.根据权利要求3所述的方法,其特征在于,所述矩阵为2x 2矩阵或3x 3矩阵。
5.根据权利要求1所述的方法,其特征在于,所述候选字符为所述分块数量的验证字符的集合。
6.根据权利要求1所述的方法,其特征在于,所述候选字符为所述分块数量的验证字符和至少一个混淆字符的集合。
7.根据权利要求1所述的方法,其特征在于,所述生成验证字符的效果图包括对所述效果图的倾斜或扭曲。
8.一种字符验证码实现装置,其特征在于,所述装置包括如下模块:
选择模块,用于选择验证字符;
分块模块,用于对所述验证字符分块;
字符形成模块,用于根据所述分块,生成多个候选字符;
随机排序模块,用于打乱所述候选字符的排列顺序;
字符块容器设置模块,用于设置字符块容器大小;
候选字符块形成模块,
用于将所述候选字符按照与所述字符分块对应的位置分别固定于所述字符块容器,检测所述字符是否超出字符块容器大小,若是则隐藏超出部分,形成候选字符块;
效果图生成模块,用于生成所述验证字符的效果图;
验证模块,用于验证用户使用所述候选字符块对所述效果图的填充结果。
9.根据权利要求8所述的装置,其特征在于,所述字符块容器的大小与所述字符分块相同。
10.根据权利要求8所述的装置,其特征在于,所述分块模块,将所述候选字符按照M xN分块矩阵进行分块,所述M、N为自然数,且M、N不同时为1。
11.根据权利要求10所述的装置,其特征在于,所述矩阵为2x 2矩阵或3x 3矩阵。
12.根据权利要求8所述的装置,其特征在于,所述候选字符块形成模块形成的所述候选字符组为所述分块数量的验证字符的集合。
13.根据权利要求8所述的装置,其特征在于,所述候选字符块形成模块形成的所述候选字符组为所述分块数量的验证字符和至少一个混淆字符的集合。
14.根据权利要求8所述的装置,其特征在于,所述效果图生成模块,还用于倾斜或扭曲所述效果图。
15.一种终端,其特征在于,包含权利要求8-14之一所述的装置。
CN201610722930.7A 2016-08-25 2016-08-25 一种字符验证码实现方法、装置及终端 Active CN107784219B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610722930.7A CN107784219B (zh) 2016-08-25 2016-08-25 一种字符验证码实现方法、装置及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610722930.7A CN107784219B (zh) 2016-08-25 2016-08-25 一种字符验证码实现方法、装置及终端

Publications (2)

Publication Number Publication Date
CN107784219A CN107784219A (zh) 2018-03-09
CN107784219B true CN107784219B (zh) 2019-04-30

Family

ID=61438302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610722930.7A Active CN107784219B (zh) 2016-08-25 2016-08-25 一种字符验证码实现方法、装置及终端

Country Status (1)

Country Link
CN (1) CN107784219B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874756B (zh) * 2018-06-29 2022-05-20 广东智媒云图科技股份有限公司 一种验证码优化方法
CN110942062B (zh) * 2019-11-21 2022-12-23 杭州网易智企科技有限公司 图像验证码生成方法、介质、装置和计算设备
CN111177688B (zh) * 2019-12-26 2022-10-14 微梦创科网络科技(中国)有限公司 一种基于形似语言混合字体的安全认证方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102243707A (zh) * 2010-05-12 2011-11-16 株式会社东芝 字符识别结果验证设备和字符识别结果验证方法
CN104574466A (zh) * 2015-01-14 2015-04-29 广东小天才科技有限公司 一种拼图学习方法及系统
KR101598331B1 (ko) * 2015-12-11 2016-03-14 주식회사 시큐브 시간분할 세그먼트 블록 기반 수기서명 인증 시스템 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201690498U (zh) * 2009-10-09 2010-12-29 深圳市聚合互动科技有限公司 手机即拍即拼装置和手机
CN201940016U (zh) * 2010-08-13 2011-08-24 刘瑞山 拼图魔方
CN102743865B (zh) * 2012-07-23 2014-12-10 东莞市捷达兴印刷有限公司 一种纸质拼图的生产工艺和纸质拼图
CN104598802A (zh) * 2015-02-13 2015-05-06 北京京东尚科信息技术有限公司 一种基于拼图的校验方法和系统
CN105701500A (zh) * 2016-01-01 2016-06-22 三峡大学 单面英文碎纸片拼接识别方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102243707A (zh) * 2010-05-12 2011-11-16 株式会社东芝 字符识别结果验证设备和字符识别结果验证方法
CN104574466A (zh) * 2015-01-14 2015-04-29 广东小天才科技有限公司 一种拼图学习方法及系统
KR101598331B1 (ko) * 2015-12-11 2016-03-14 주식회사 시큐브 시간분할 세그먼트 블록 기반 수기서명 인증 시스템 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
文档图像拼接技术研究;高鸿;《中国优秀硕士学位论文全文数据库信息科技辑》;20111215(第12期);第I138-770页

Also Published As

Publication number Publication date
CN107784219A (zh) 2018-03-09

Similar Documents

Publication Publication Date Title
US10218506B1 (en) Cross-device authentication
Sivakorn et al. I’m not a human: Breaking the Google reCAPTCHA
CN104468531B (zh) 敏感数据的授权方法、装置和系统
CN1845489B (zh) 验证信息生成装置及其方法、反自动机验证装置及其方法
CN108011863B (zh) 识别暴力破解的方法及装置
US20110292031A1 (en) Manipulable human interactive proofs
CN107784219B (zh) 一种字符验证码实现方法、装置及终端
US20090113294A1 (en) Progressive captcha
US20140157382A1 (en) Observable authentication methods and apparatus
US10448247B2 (en) Method and apparatus for information verification
WO2006100554A3 (en) A system and method of secure login on insecure systems
CN105323073A (zh) 一种身份验证方法、装置和系统
CN104348612A (zh) 一种基于移动终端的第三方网站登录方法和移动终端
CN103455965A (zh) 一种基于验证图片的验证方法、装置及服务器
US20090235178A1 (en) Method, system, and computer program for performing verification of a user
CN104657653B (zh) 图像验证码的验证方法及验证装置
CN104348617A (zh) 验证码处理方法、装置、终端及服务器
CN107835160A (zh) 基于二维码的第三方用户认证方法
CN105162604A (zh) 一种基于特征图像识别的验证方法、服务器及系统
CN110324344A (zh) 账号信息认证的方法及装置
CN104375935B (zh) Sql注入攻击的测试方法和装置
CN102315934A (zh) 一种有限资源下图片验证码的生成及传输系统与方法
CN105763536A (zh) 基于动态图形密码的网络注册方法及系统
CN106161452A (zh) 验证码的发送方法及装置
CN106446660A (zh) 提供验证码的方法、系统及终端设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant