动态验证码(动态验证码2fa)
本发明属于安全验证技术领域,具体涉及一种动态验证码生成方法。
背景技术:
身份验证是社会生活的基本问题之一,身份验证系统不仅在家庭生活、个人娱乐、企业应用等方面有着巨大的应用前景,更在国家安全、司法刑侦、个人安全等方面发挥着重要作用。目前,身份验证采用包括基于携带物(如ic卡、钥匙等)或者知识(如密码、口令等)的传统技术,也有采用基于动态验证码的计算机自动识别技术;其中,动态验证码是目前区分用户是计算机还是人的公共全自动程序,可以有效防止黑客对某个特定注册用户使用特定程序暴力破解方式进行不断的登陆尝试,从而防止恶意侵入、信息盗取等行为,使用验证码是现在很多网站通行的方式。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
1)目前的动态验证码通常为动态令牌直接生成的乱码,无法针对不同用户进行验证码生成,动态令牌的密码生成过程容易被破解,导致验证过程的安全性低,对于一些有较高信息保密需求或隐私保密需求的验证过程的安全需求无法满足;
2)目前的部分动态验证码是通过直接发送发起验证请求的用户终端的用户认证信息的方式,将验证过程在服务器端完成,虽然解决了验证码易被破解的问题,但是用户终端存储的用户认证信息存在泄漏的风险,无法兼顾实用性及安全性的问题。
技术实现要素:
本发明旨在于至少在一定程度上解决上述技术问题之一。
为此,本发明目的在于提供一种动态验证码生成方法,能够使得动态验证码能够基于当前请求中的人脸信息生成,提高了动态验证码生成的安全性。
本发明所采用的技术方案为:
一种动态验证码生成方法,包括以下步骤:
实时检测是否有动态验证码的生成请求,如是,则接收并分析当前生成请求;
判断当前生成请求中是否包括人脸图像,如是,则获取当前人脸图像,如否,则输出请求错误信息;
获取当前人脸图像中的人脸区域,然后提取当前人脸区域的多个特征点;
根据多个特征点得到数字序列,然后根据数字序列得到初始密码;
获取当前生成请求中的请求时间及第一动态随机码,然后将初始密码、请求时间及第一动态随机码进行加密计算得到动态验证码。
作为优选,得到动态验证码后,还包括以下步骤:
根据当前动态验证码生成基础图层;
获取第二动态随机码,根据第二动态随机码生成多个干扰图层;
将每个干扰图层分别与基础图层合并,形成为多个复合帧;
获取预设帧速,使得多个复合帧以预设帧速进行动态显示,得到最终动态验证码。
作为优选,生成基础图层时,具体步骤如下:
获取当前动态验证码及基础背景图片;
将当前动态验证码的多个验证字符进行分离,然后将分离后的多个验证字符与基础背景图片结合形成基础图层。
作为优选,分离后的每个验证字符的颜色均与基础背景图片的颜色为对比色。
作为优选动态验证码,每个干扰图层的背景颜色均与基础背景图片的颜色相同,每个干扰图层中字符的颜色、字体及大小均与基础图层中的验证字符颜色、字体及大小相同。
作为优选,第一随机动态码及第二随机动态码均为由动态令牌随机生成且无规律的乱码。
作为优选,得到初始密码时,具体步骤如下:
根据提取的多个特征点计算两两特征点间的点距值,并根据多个点距值生成点距值集合;
将当前点距值集合输入预设的序列生成模型中生成数字序列;
将数字序列进行加密计算,得到初始密码。
作为优选,提取当前人脸区域的多个特征点时,利用opencv中的lbf算法进行多个特征点的提取。
作为优选,生成点距值集合时,具体步骤如下:
获取提取的68个特征点;
分别计算68个特征点中两两特征点之间的直线距离值,其中,68个特征点对应2278个直线距离值;
筛去数值相同的直线距离值,将余下的多个直线距离值分别作为多个点距值,并生成点距值集合。
作为优选,将数字序列进行加密计算时及将初始密码、请求时间及随机码进行加密计算时,采用的加密算法包括对称式加密算法和非对称式加密算法。
本发明的有益效果为:
通过采用初始密码、请求时间及随机码等多种信息生成动态验证码,使得生成的动态验证码重复概率极小,提高了验证过程中的安全性,且根据每个生成请求中的不同人脸区域生成具有针对性的动态验证码,避免动态验证码被轻易破解,进而避免信息安全问题的发生,能够满足有较高信息保密需求或隐私保密需求的验证过程的安全需求,适于推广使用。
本发明的其他有益效果将在具体实施方式中进行详细说明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是实施例1的流程框图。
具体实施方式
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本发明公开的功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本发明阐述的实施例中。
应当理解,本发明使用的术语仅用于描述特定实施例,并不意在限制本发明的示例实施例。若术语“包括”、“包括了”、“包含”和/或“包含了”在本发明中被使用时动态验证码,指定所声明的特征、整数、步骤、操作、单元和/或组件的存在性,并且不排除一个或多个其他特征、数量、步骤、操作、单元、组件和/或他们的组合存在性或增加。
应当理解,还应当注意到在一些备选实施例中,所出现的功能/动作可能与附图出现的顺序不同。例如,取决于所涉及的功能/动作,实际上可以实质上并发地执行,或者有时可以以相反的顺序来执行连续示出的两个图。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以不必要的细节来示出众所周知的过程、结构和技术,以避免使得示例实施例不清楚。
实施例1:
如图1所示,本实施例提供一种动态验证码生成方法,包括以下步骤:
实时检测是否有动态验证码的生成请求,如是,则接收并分析当前生成请求;
判断当前生成请求中是否包括人脸图像,如是,则获取当前人脸图像,如否,则输出请求错误信息;
获取当前人脸图像中的人脸区域,然后提取当前人脸区域的多个特征点;
根据多个特征点得到数字序列,然后根据数字序列得到初始密码;
获取当前生成请求中的请求时间及第一动态随机码,然后将初始密码、请求时间及第一动态随机码进行加密计算得到动态验证码。
实施例2
本实施例提供的技术方案是在实施例1的技术方案基础上作出的进一步改进,本实施例与实施例1的区别在于:
本实施例中,得到动态验证码后,还包括以下步骤:
根据当前动态验证码生成基础图层;
获取第二动态随机码,根据第二动态随机码生成多个干扰图层;
将每个干扰图层分别与基础图层合并,形成为多个复合帧;
获取预设帧速,使得多个复合帧以预设帧速进行动态显示,得到最终动态验证码;其中,预设帧速可以满足视觉暂留的要求,便于人眼识别动态验证码。
由此使得最终动态验证码以动态验证码图片的方式输出,在动态变化时,视觉上虽然干扰图层中的字符呈现不断变化的状态,但动态验证码由于视觉暂留而保持静止不变且清楚可见,而且带随机字符的多个干扰图层能够有效防止计算机破解程序识别验证码且不妨碍人眼对验证码的识别,由此本实施例提供的技术方案不仅能提高验证码的安全性,而且得到的验证码人眼易识别,提高用户体验。
作为其中一种优选的实施方式,预设帧速为0.1s-2s,优选为1s,当预设帧速为1s时,视觉暂留的效果最佳,视觉上验证码不会模糊,便于识别。
实施例3
本实施例提供的技术方案是在实施例2的技术方案基础上作出的进一步改进,本实施例与实施例2的区别在于:
本实施例中,生成基础图层时,具体步骤如下:
获取当前动态验证码及基础背景图片;
将当前动态验证码的多个验证字符进行分离,然后将分离后的多个验证字符与基础背景图片结合形成基础图层。
在最终动态验证码生成后,视觉上验证字符静止不动可清楚辨认,干扰图层中的随机字符则不断闪现,干扰图层中的随机字符能够干扰计算机破解程序,增加动态验证码的安全性,同时对动态验证码本身不需进行干扰处理动态,验证码辨识度高,方便用户快速识别,提高验证字符输入的正确性。
实施例4
本实施例提供的技术方案是在实施例3的技术方案基础上作出的进一步改进,本实施例与实施例3的区别在于:
本实施例中,分离后的每个验证字符的颜色均与基础背景图片的颜色为对比色,由此使得验证字符易于辨识。
实施例5
本实施例提供的技术方案是在实施例4的技术方案基础上作出的进一步改进,本实施例与实施例4的区别在于:
本实施例中,每个干扰图层的背景颜色均与基础背景图片的颜色相同;每个干扰图层中字符的颜色、字体及大小均与基础图层中的验证字符颜色、字体及大小相同;由此不但可以避免复合帧的背景颜色对验证字符的覆盖,还可以提高验证码的辨识度,且增加计算机破解程序破解动态验证码的破解难度。
实施例6
本实施例提供的技术方案是在实施例2-5任一的技术方案基础上作出的进一步改进,本实施例与实施例2-5任一的区别在于:
本实施例中,第一随机动态码及第二随机动态码均为由动态令牌随机生成且无规律的乱码。
实施例7
本实施例提供的技术方案是在实施例1-6任一的技术方案基础上作出的进一步改进,本实施例与实施例1-6任一的区别在于:
本实施例中,得到初始密码时,具体步骤如下:
根据提取的多个特征点计算两两特征点间的点距值,并根据多个点距值生成点距值集合;
将当前点距值集合输入预设的序列生成模型中生成数字序列;
将数字序列进行加密计算,得到初始密码。
作为其中一种优选的实施方式,预设的序列生成模型可以但不仅限为奇数模型及偶数模型;
当序列生成模型为奇数模型时,为了形成数字序列可执行以下步骤:
a1.从点距值的集合中选取多个奇数项元素;
a2.若点距值集合中可选取的奇数项元素的个数大于或等于数字序列的元素个数,则从点距值集合中选取所需个数的奇数项元素形成数字序列;以及
a3.若可选取的奇数项元素的个数小于形成数字序列所需的元素个数,则从点距值集合中选取所有可选取的奇数项元素形成数字序列的一部分,随后将已选取的奇数项元素从点距值集合中去除,然后以去除元素后的集合为基础重新执行步骤a1至步骤a3。
当序列生成模型为偶数模型时,为了形成数字序列可执行以下步骤:
b1.从点距值的集合中选取多个偶数项元素;
b2.若点距值集合中可选取的偶数项元素的个数大于或等于数字序列的元素个数,则从点距值集合中选取所需个数的偶数项元素形成数字序列;以及
b3.若可选取的偶数项元素的个数小于形成数字序列所需的元素个数,则从点距值集合中选取所有可选取的偶数项元素形成数字序列的一部分,随后将已选取的偶数项元素从点距值集合中去除,然后以去除元素后的集合为基础重新执行步骤b1至步骤b3。
实施例8
本实施例提供的技术方案是在实施例7的技术方案基础上作出的进一步改进,本实施例与实施例7的区别在于:
本实施例中,提取当前人脸区域的多个特征点时,利用opencv中的lbf算法进行多个特征点的提取。
实施例9
本实施例提供的技术方案是在实施例8的技术方案基础上作出的进一步改进,本实施例与实施例8的区别在于:
本实施例中,生成点距值集合时,具体步骤如下:
获取提取的68个特征点;
分别计算68个特征点中两两特征点之间的直线距离值,其中,68个特征点对应2278个直线距离值;
筛去数值相同的直线距离值,将余下的多个直线距离值分别作为多个点距值,并生成点距值集合。
由此可以形成无重复值的点距值集合,使得后续的数字序列生成更加准确且唯一。
实施例10
本实施例提供的技术方案是在实施例7-9任一的技术方案基础上作出的进一步改进,本实施例与实施例7-9任一的区别在于:
本实施例中,将数字序列进行加密计算时及将初始密码、请求时间及随机码进行加密计算时,采用的加密算法包括对称式加密算法和非对称式加密算法。
以上所描述的实施例仅仅是示意性的,若涉及到作为分离部件说明的单元,其可以是或者也可以不是物理上分开的;若涉及到作为单元显示的部件,其可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
文章评论(0)