一种动态口令的生成及认证方法与系统技术领域
本发明涉及身份认证领域,特别涉及一种动态口令的生成及认证方法
与系统
背景技术
动态口令在身份认证领域的应用日益广泛,现有技术中,动态口令分
为时间型动态口令、事件型动态口令及挑战应答型动态口令。普通时
间型动态口令或者带时间参与计算的挑战应答型动态口令,在一个动
态口令变化周期仅能产生一个动态口令,出于安全性考虑,如果口令
被认证服务器认证通过后,就不能重复使用了。如果想进行认证,必
须等待一段时间,等到达下一个时间周期开始,生成下一个不同的动
态口令才能进行,不能满足在短时间内进行多次身份认证的场合的需
要;
普通事件型的动态口令,存在动态令牌不断产生动态口令而不与服务
器做认证时,令牌与服务器失步的情况,且普通事件型的动态口令引
入的次数为可预测动态因子,存在一定的安全隐患。
发明内容
为解决现有技术中存在的问题,本发明提供了一种动态口令的生成及
认证方法及系统,引入一组数据,参与时间型动态口令的产生,且在
一个时间周期内该组数据中的各个数据可以循环参与动态口令的生成
。
根据本发明的一方面,提供了一种动态口令生成及认证的方法,包括
:
S1:令牌接收到生成动态口令命令,根据所述令牌内部的第一计时器
所计时间生成第一动态因子;
所述令牌检查到预设条件时,对所述第一偏移指针进行初始化;
S2:所述令牌判断第一偏移指针是否为无效状态,是则报错,否则继
续;
S3:所述令牌根据所述第一偏移指针从第一数据组中获取当前数据,
调用预设算法,根据所述第一动态因子、所述当前数据,计算得到第
一动态口令,并判断所述当前数据是否为所述第一组数据组中的最后
一个数据,是则将所述第一偏移指针设为无效状态,否则将所述第一
偏移指针指向当前数据的下一个数据;
S4:服务器接收到用户输入的第二动态口令,根据服务器内部的第二
计时器所计时间得到第二动态因子;
S5:根据所述第二动态因子及认证窗口值,生成一组动态因子,得到
认证窗口;
S6:调用所述预设算法,根据所述认证窗口中的动态因子及服务器内
部存储的第二数据组中的各数据,计算生成一组动态口令,验证所述
一组动态口令中是否存在与所述第二动态口令一致的动态口令,是则
认证通过,否则认证失败。
具体地,所述第一数据组与所述第二数据组一致,包含预设个数的有
顺序且各不相同的数据;
所述当前数据为所述第一偏移指针指向的数据。
进一步地,所述步骤S1中根据所述令牌内部的第一计时器所计时间生
成第一动态因子具体为:用所述第一计时器所计秒数除以第一预设时
长值,对得到的商取整得到所述第一动态因子;
所述步骤S4中,根据服务器内部的第二计时器所计时间得到第二动态
因子具体为:用所述第二计时器所计秒数除以所述第一预设时长值,
对得到的商取
整得到所述第二动态因子。
其中,所述令牌检查到预设条件时,对所述第一偏移指针进行初始化
具体为:所述令牌实时监测所述第一计时器所计时间,每隔所述第一预
设时长,对所述第一偏移指针进行初始化;
所述对所述第一偏移指针进行初始化具体为:将所述第一偏移指针指
向所述第一数据组中的第一个数据。
或者,所述令牌检查到预设条件时,对所述第一偏移指针进行初始化
具体为:所述令牌生成第一动态因子之后,判断所述第一动态因子与
第一缓存区中的数据是否一致,若不一致则对所述第一偏移指针进行
初始化;
所述令牌对所述第一偏移指针进行初始化之后,用所述第一动态因子
更新所述第一缓存区中的数据;
所述对所述第一偏移指针进行初始化具体为:将所述第一偏移指针指
向所述第一数据组中的第一个数据。
进一步地,所述步骤S6中计算生成一组动态口令具体为:调用所述预
设算法,对所述认证窗口中的每个动态因子与第二数据中的各个数据
的组合得到的数据分别进行计算,得到所述一组动态口令。
或者,所述步骤S6具体包括:
步骤a:按预设顺序调用所述认证窗口中的第一个动态因子;
步骤b:依次将所述第二数据组中的各个数据与调用的动态因子组合,
调用预设算法对组合得到的各个数据进行计算得到所述一组动态口令
;
步骤c:验证所述一组动态口令中是否存在与所述第二动态口令一致的
动态口令,是则认证通过,否则执行步骤d;
步骤d:判断所述调用的动态因子是否为所述认证窗口中的最后一个动
态因
子,是则认证失败,否则调用下一个动态因子,返回步骤b。
进一步地,所述步骤S6中,当验证所述一组动态口令中存在与所述第
二动态口令一致的动态口令时,还包括:
S7:所述服务器调用第二缓存区中的数据,将与所述第二动态口令一
致的动态口令对应的动态因子与所述第二缓存区中的数据进行比较,
若大于,则认证通过,执行步骤S8;若小于,则认证失败;若等于则
执行S9;
S8:用与所述第二动态口令一致的动态口令对应的动态因子更新所述
第二缓存区中的数据,并设置第二偏移指针指向第二数据组中与所述
第二动态口令一致的动态口令对应的数据;
S9:判断与所述第二动态口令一致的动态口令对应的数据在第二数据
组中的顺序是否在所述第二偏移指针指向的数据之后,是则认证通过
,设置第二偏移指针指向第二数据组中与所述第二动态口令一致的动
态口令对应的数据,否则认证失败。
优选地,所述步骤S1之后还包括令牌提示用户输交易账号、交易金额
、挑战码的步骤;
所述步骤S4之前还包括服务器生成挑战码的步骤;
所述步骤S3中根据所述第一动态因子、所述当前数据,计算得到第一
动态口令具体为:
将所述第一动态因子、所述当前数据与令牌密钥、用户输入令牌的账
号、金额、挑战码进行组合,并用所述预设算法对组合得到的数据进
行计算得到所述第一动态口令;
所述步骤S6中调用所述预设算法,根据所述认证窗口中的动态因子及
服务器内部存储的第二数据组中的各数据,计算生成一组动态口令具
体为:
依次将所述认证窗口中的各个动态因子与第二数据组中的各数据、令
牌密钥、服务器接收到的用户输入的账号、金额、服务器生成的挑战
码分别进行组合,并用所述预设算法对组合得到的各数据分别进行计
算得到所述一组动态口令。
或者,所述步骤S6中生成一组动态口令具体包括:
将第二缓存区中的数据与所述认证窗口中的动态因子进行比对,从所
述认证窗口中获取等于或大于所述第二缓存区中的数据的动态因子;
依次将大于所述第二缓存区中的数据的各动态因子与所述第二数据组
中的各个数据分别进行组合,调用所述预设算法对组合得到的数据分
别进行计算,得到第一部分动态口令;将等于所述第二缓存区中的数
据的动态因子分别与所述第二数据组中第二偏移指针指向的数据之后
的各个数据分别进行组合,调用所述预设算法,对组合得到各数据分
别进行计算得到第二部分动态口令;
所述第一部分动态口令与所述第二部分动态口令组成所述一组动态口
令。
进一步地,所述步骤S6中,当验证所述一组动态口令中存在与所述第
二动态口令一致的动态口令时,还包括:
用与所述第二动态口令一致的动态口令对应的动态因子更新所述第二
缓存区中的数据,并将所述第二偏移指针指向与所述第二动态口令一
致的动态口令对应的第二数据组中的数据。
根据本发明的另外一个方面,提供了一种动态口令生成及认证的系统
,包括:令牌和服务器;
所述令牌包括:
第一接收模块,用于接收生成动态口令命令;
第一生成模块,用于当所述第一接收模块接收到生成动态口令命令时
,根
据令牌内部的第一计时器所计时间生成第一动态因子;
操作模块,用于每隔第一预设时长,对所述第一偏移指针初始化一次
;或者当判断所述第一动态因子与第一缓存区中的数据不一致时,对
所述第一偏移指针进行初始化,并用所述第一动态因子更新第一缓存
区中的数据;
第一计算模块,用于根据所述第一偏移指针从第一数据组中获取当前
数据,调用预设算法,根据所述第一动态因子及所述当前数据,计算
得到第一动态口令;
第一判断模块,用于在所述第一计算模块计算得到第一动态口令后,
判断当前数据是否为第一数据组中的最后一个数据;
设置模块,用于当所述当前数据不为最后一个数据时,将所述第一偏
移指针指向所述第一数据组中当前数据的下一个数据;当所述当前数
据为最后一个数据时,将所述第一偏移指针设为无效状态,等待初始
化;
所述服务器包括:
第二接收模块,用于接收用户通过主机输入的第二动态口令;
第二生成模块,用于根据所述服务器内部的第二计时器所计时间得到
第二动态因子;并根据所述第二动态因子及认证窗口值,生成一组动
态因子,得到认证窗口;
第二计算模块,用于调用所述预设算法,根据所述认证窗口中的动态
因子及服务器内部存储的第二数据组中的各数据,计算生成一组动态
口令;
验证模块:用于验证所述一组动态口令中是否存在与所述第二动态口
令一致的动态口令。
进一步地,所述第二计算模块包括:
第一调用单元,用于调用所述预设算法及所述认证窗口中的第一动态
因子;
第一组合单元,用于依次将所述认证窗口中的各个动态因子与所述第
二数据组中的各个数据分别进行组合;
第一处理单元,用于用所述预设算法对所述第一组合单元组合得到的
各数据分别进行计算,得到所述一组动态口令。
或者,所述第二计算模块包括:
第二调用单元,用于调用所述预设算法及依次调用所述认证窗口中的
动态因子;
第二组合单元,用于将所述第二数据组中的各个数据分别与调用的动
态因子组合;
第二处理单元,用于用所述预设算法对所述组合单元组合得到的数据
进行计算得到所述一组动态口令;
所述验证模块包括:
第一验证单元,用于验证所述第二处理单元计算得到的所述一组动态
口令中,是否存在与所述第二动态口令一致的动态口令;
第一判断单元,用于当所述第一验证单元验证所述一组动态口令中不
存在与所述第二动态口令一致的动态口令时,判断调用的动态因子是
否为所述认证窗口中的最后一个动态因子,当判断当前动态因子不为
最后一个动态因子时,调用下一个动态因子,所述第二组合单元工作
。
进一步地,所述系统还包括:
比较模块,用于当所述验证模块验证所述一组动态口令中有与所述第
二动态口令一致的动态口令时,将与所述第二动态口令一致的动态口
令对应的动态因子与第二缓存区中的数据进行比较,若大于则认证通
过,第一更新模块工作,若小于则认证失败,若等于则第二判断模块
工作;
所述第一更新模块,用于用与所述第二动态口令一致的动态口令对应
的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指向
所述第二数据组中与所述第二动态口令一致的动态口令对应的数据;
所述第二判断模块,用于判断在所述第二数据组中与所述第二动态口
令一致的动态口令对应的数据在第二数据组中的顺序是否在所述第二
偏移指针指向的数据之后,是则认证通过,设置第二偏移指针指向第
二数据组中与所述第二动态口令一致的动态口令对应的数据,否则认
证失败。
或者,所述第二计算模块包括:
查找单元,用于从所述认证窗口中查找到等于或大于第二缓存区中的
数据的动态因子;
第三处理单元,用于将大于所述第二缓存区中的数据的动态因子依次
分别与所述第二数据组中的各个数据进行组合,调用所述预设算法对
组合得到的数据分别进行计算,得到第一部分动态口令;将等于所述
第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指
针指向的数据之后的各个数据进行组合,调用所述预设算法,对组合
得到各数据分别进行计算得到第二部分动态口令;将所述第一部分动
态口令与所述第二部分动态口令组成所述一组动态口令。
进一步地,所述系统还包括:
第二更新模块,用于当所述验证模块验证所述一组动态口令中存在与
所述第二动态口令一致的动态口令时,用与所述第二动态口令一致的
动态口令对应的动态因子更新所述第二缓存区中的数据,并将所述第
二偏移指针指向与所述第二动态口令一致的动态口令对应的第二数据
组中的数据。
所述第一接收模块还用于接收用户输入令牌的数据;
所述第二接收模块还用于接收用户通过主机输入到服务器的数据;
所述第二生成模块还用于生成挑战码。
进一步地,所述第一计算模块包括:
第三组合单元,用于将所述第一动态因子、所述当前数据、令牌密钥
与用户输入令牌的数据进行组合;
第四处理单元,用于调用所述预设算法对所述第三组合单元组合得到
的数据进行计算得到所述第一动态口令。
通过本发明提供的方案,在时间型动态令牌及事件型动态令牌的基础
上,提高了动态口令认证的安全性,且满足了短时间内需要进行多次
身份认证的场合的需要,为身份认证过程中认证模式提供了多种选择
。
附图说明
图1为本发明实施例1提供的一种动态口令的生成及认证方法流程图;
图2为本发明实施例1提供的一种动态口令的生成及认证方法的另一种
实现过程流程图;
图3为本发明实施例1提供的一种动态口令的生成及认证方法的再一种
实现过程流程图;
图4为本发明实施例2提供的一种动态口令的生成及认证系统方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进
行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实
施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技
术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属
于本发明保护的范围。
实施例1
本发明实施例1提供了一种动态口令的生成及认证方法,具体包括:
步骤101:令牌接收到触发生成动态口令的命令;
优选地,在本实施例中,所述生成动态口令的命令可以为按键触发信
息,该步骤之后还可以包括令牌提示用户输入到令牌的挑战码、交易
账号、交易金额等数据。
在本实施例中,所述令牌可以有多种动态口令类型选择,例如有不同
的按键以供用户选择生成登录账户、修改账户信息、转账、交易等类
型的动态口令,并按照与服务器事先约定,提示用户输入相应的数据
。
步骤102:令牌根据内部第一计时器所计时间及第一预设时长,生成第
一动态因子;
优选地,在本实施例中,所述第一动态因子为所述第一计时器所计时
间包含的完整的所述第一预设时长的个数,具体地,在本实施例中,
生成动态因子具体为:用所述计时器所计时间值除以所述第一预设时
长值,对得到的商取整即得到所述第一动态因子。
步骤103:判断所述第一动态因子是否与第一缓存区中的数据一致,是
则执行步骤104,否则初始化第一偏移指针,并用所述第一动态因子更
新所述第一缓存区中的数据,执行步骤104;
优选地,在本实施例中,所述第一偏移指针指向第一数据组中的某个
数据,当所述第一偏移指针被初始化后,所述第一偏移指针指向所述
第一数据组中的第一个数据。
所述第一缓存区中存储的数据可以为令牌上一次生成动态口令时所生
成的动态因子,还可以为上一次初始化第一偏移指针时对应的动态因
子。
在本实施例中,所述第一偏移指针还可以根据所述计时器所计时间进
行初始化,根据所述计时器,每隔所述第一预设时长将所述第一偏移
指针初始化一次,相应地,删除步骤103,步骤102之后直接执行步骤
104。
步骤104:根据第一偏移指针从所述第一数据组中获取当前数据,并调
用预设算法对当前数据与第一动态因子进行计算,生成第一动态口令
,所述第一偏移指针指向所述第一数据组中当前数据的下一数据;
优选地,在本实施例中,当步骤101之前还包括令牌提示用户输入挑战
码、交易账号、交易金额等数据时,用户输入到令牌的数据、当前数
据、所述第一动态因子、令牌密钥均参与生成动态口令。生成第一动
态口令的具体为:调用预设的算法如SHA1、SM3等,对上述数据组合得
到的数据进行计算,从计算结果中提取预设位数的数据得到所述第一
动态口令。
特别地,在本实施例中,本步骤中所述第一偏移指针指向当前数据的
下一个数据之前还包括:验证当前数据是否为第二数据组中的最后一
个数据,是则将所述第一偏移指针设为无效状态,等待初始化,否则
再将所述第一偏移指针执行当前数据的下一数据。相应地,该步骤之
前还包括令牌判断所述第一偏移指针是否为无效状态的步骤,若为无
效状态则报错,若不为无效状态再执行步骤104。
所述第一数据组中的数据各不相同,顺序、个数固定,可以为一组不
规则的数据,也可以为一组规则变化的数据,如递增、递减的数据等
。
步骤105:服务器接收到用户输入的第二动态口令,根据服务器内部的
第二计时器所计时间及第一预设时长生成第二动态因子;
优选地,在本实施例中,服务器通过主机接收到用户输入的第二动态
口令。
生成第二动态因子具体为:第二计时器所计时间除以所述预设时长得
到的商
取整后加服务器记录的漂移值得到。
步骤105之前还包括,服务器接收到用户发送的操作请求,通过主机提
示用户输入动态口令的步骤,特别地,当事先约定需要挑战码参与生
成动态口令时,该步骤前还包括服务器生成挑战码的步骤。
步骤106:根据所述第二动态因子及认证窗口值,生成一组动态因子,
得到认证窗口;
优选地,在本实施例中,以所述认证窗口值为2为例,则生成的一组动
态因子包括:所述第二动态因子的值减1得到的第三动态因子、第二动
态因子、所述第二动态因子的值加1得到的第四动态因子。
步骤107:服务器调用认证窗口中的第二动态因子,根据所述第二动态
因子及服务器内部的第二数据组中的各数据,生成第一组动态口令;
优选地,在本实施例中,所述第二数据组中的数据、数据个数及数据
顺序与所述第一数据组相同。服务器生成第一组动态口令具体为:调
用预设的算法,将第二动态因子与第二数据组中的各个数据分别进行
组合,对组合得到的各数据分别进行计算得到第一组动态口令;生成
每个动态口令的算法及过程与步骤104中生成方式一致。特别地,当所
述令牌与所述服务器事先约定用户输入的信息或挑战码参与生成动态
口令时,则该步骤中,与令牌生成第一动态口令的实现过程相同,用
户通过主机输入到服务器中的数据及服务器生成的挑战码中相应的数
据参与生成第一组动态口令。
本实施例提供一种优选地方式以清楚说明该生成动态口令的过程,以
所述第二数据组中各数据依次为:0x 00 00 00 00~ 00 00 0
0 09十个数据、第二动态因子为0x 00 00 00 00 01 56 56
01、挑战码为0x 31 32 33 34 35 36 37 38-39 30、令牌密
钥为0x 80 d0 3f 19 3f e5 0c 2d-de 8a 84 46 bf a
2 88 dc 35 92 65 1c,所
述预设算法SM3为例,具体过程为:将所述密钥与所述第二动态因子顺
序拼接、 再分别与第二数据组中的10个数据分别进行顺序拼接得到
10个拼接数据、分别在10个拼接数据后再拼接挑战码得到10个组合数
据,用所述预设算法对上述10个组合数据分别进行计算,得到10份摘
要,分别从各份摘要中截取低位端4个字节数据,均转化为十进制数,
分别从10个十进制数中截取低位8位数据得到所述第一组动态口令。
步骤108:服务器验证第一组动态口令中是否存在与第二动态口令一致
的动态口令,是则执行步骤111,否则执行步骤109;
步骤109:所述服务器调用认证窗口中的第二动态因子的下一个动态因
子,并根据调用的动态因子及第二数据组,生成第二组动态口令,判
断所述第二组动态口令中是否有与第二动态口令一致的动态口令,是
则执行步骤111,否则执行步骤110;
本实施例中,生成第二组动态口令的过程参见步骤107。
步骤110:所述服务器调用认证窗口中当前调用的动态因子的下一个动
态因子,根据当前调用的动态因子及所述第二数据组生成第三组动态
口令,判断所述第三组动态口令中是否有与所述第二动态口令一致的
动态口令,是则执行步骤111;否则认证失败,报错;
生成第三组动态口令的过程参见步骤107。
优选地,在本实施例中,所述认证窗口值为2, 从而认证窗口中有三
个动态因子,调用动态因子的先后顺序为:先调用第二动态因子、再
第二动态因子加减1得到的动态因子。所述认证窗口值还可以为其他值
,则相应地,所述认证窗口中还包括其他动态因子,在该步骤中第三
组动态口令中没有与所述第二动态口令一致的动态口令时,逐次调用
所述其他动态因子来生成动态口令并认证,
调用其余动态因子的顺序按与第二动态因子差值的绝对值由小到大的
顺序。
步骤111:用与所述第二动态口令一致的动态口令对应的动态因子与服
务器中第二缓存区中的数据比较;
若对应的动态因子小于第二缓存区中的数据,则认证失败,报错;
若等于,则执行步骤112;
若大于,则认证通过,用所述对应的动态因子更新第二缓存区中的数
据,并将第二偏移指针初始化。
优选地,在本实施例中,所述第二偏移指针初始化后指向第二数据组
中的第一个数据。
步骤112:判断与所述第二动态口令一致的动态口令对应的第二数据组
中的数据在第二数据组中的顺序是否在第二偏移指针指向的数据之后
,是则认证通过,用所述对应的动态因子的值更新第二缓存区中的数
据,并将第二偏移指针指向所述对应的第二数据组中的数据,否则认
证失败,报错。
优选地,在本实施例中,所述第二偏移指针指向的数据为上一次认证
通过的动态口令对应的第二数据组中的数据。
参见图2,步骤107——步骤110可以替换为:
步骤207:根据第二数据组及认证窗口中的动态因子,生成第四组动态
口令;
优选地,在本实施例中,根据所述认证窗口中的各个动态因子、第二
数据组中的各个数据得到上述第四组动态口令组,具体地,所述第四
组动态口令包括第一组动态口令、第二组动态口令及第三组动态口令
的所有动态口令,生成动态口令的方式参见步骤107。
具体地,在本实施例中,所述认证窗口值为2,所述第二数据组中有1
0个数据,则相应地,将第二动态因子上下浮动1得到三个不同的动态
因子,分别根据三个动态因子与第二数据组中的各个数据生成的第四
组动态口令,得到的所述第四组动态口令组中包含30个动态口令。
步骤208:判断上述第四组动态口令中是否存在与所述第二动态口令一
致的动态口令,是则继续执行步骤111,否则认证失败,报错。
参见图3,优选地,在本实施例中,步骤107——112还可以替换为:
步骤307:判断所述认证窗口中是否存在与所述第二缓存区中的数据一
致的动态因子,
若否,则执行步骤308;
若是,则执行步骤309;
步骤308:根据第二数据组及认证窗口中的各个动态因子,生成第四组
动态口令,执行步骤310;
优选地,该步骤具体参见步骤207。
步骤309:获取所述认证窗口中大于或等于第二缓存区中的数据的动态
因子,根据获取到的各动态因子、第二偏移指针及第二数据组中的各
数据,生成第五组动态口令,执行步骤310;
具体地,在本实施例中,所述认证窗口的值为2,若所述认证窗口中的
第二动态因子与所述第二缓存区中的数据一致,则该步骤具体为:对
第二动态因子与第二数据组中各个数据分别进行计算得到第一部分动
态口令;根据第二偏移指针指向的数据,取该数据之后的各个数据分
别与获取到的大于第二动态因子的各动态因子生成第二部分动态口令
,所述第一部分动态口令与第二部分动态
口令组成所述第五组动态口令。
步骤310:判断生成的一组动态口令中是否存在与所述第二动态口令一
致的动态口令,是则认证通过,用与所述第二动态口令一致的动态口
令对应的动态因子更新第二缓存区中的数据,并将第二偏移指针指向
第二数据组中与第二动态口令一致的动态口令对应的数据,否则认证
失败,报错。
实施例2
参见图4,本发明实施例2提供了一种动态口令的生成及认证系统,包
括令牌和服务器,其中令牌包括:
第一接收模块401,用于接收生成动态口令命令;
第一生成模块402,用于当所述第一接收模块401接收到生成动态口令
命令时,根据令牌内部的第一计时器所计时间生成第一动态因子;
操作模块403,用于每隔第一预设时长,对所述第一偏移指针初始化一
次;或者当判断所述第一动态因子与第一缓存区中的数据不一致时,
对所述第一偏移指针进行初始化,并用所述第一动态因子更新第一缓
存区中的数据;
第一计算模块404,用于根据第一偏移指针从第一数据组中获取当前数
据,调用预设算法,根据所述第一动态因子及所述当前数据,计算得
到第一动态口令;
第一判断模块405,用于在所述第一计算模块404计算得到第一动态口
令后,判断当前数据是否为第一数据组中的最后一个数据;
设置模块406,用于当所述当前数据不为最后一个数据时,将所述第一
偏移指针指向第一数据组中当前数据的下一个数据;当所述当前数据
为最后一个数据时,将所述第一偏移指针设为无效状态,等待初始化
;
其中,服务器包括:
第二接收模块407,用于接收用户通过主机输入的第二动态口令;
第二生成模块408,用于根据服务器内部的第二计时器所计时间得到第
二动态因子;并根据所述第二动态因子及认证窗口值,生成一组动态
因子,得到认证窗口;
第二计算模块409,用于调用所述预设算法,根据所述认证窗口中的动
态因子及服务器内部存储的第二数据组中的各数据,计算生成一组动
态口令;
验证模块410,用于验证所述一组动态口令中是否存在与所述第二动态
口令一致的动态口令。
本实施例系统中的服务器还包括:
比较模块411,用于当所述验证模块410验证所述一组动态口令中有与
所述第二动态口令一致的动态口令时,将与所述第二动态口令一致的
动态口令对应的动态因子与第二缓存区中的数据进行比较,若大于则
认证通过,第一更新模块工作412,若小于则认证失败,若等于则第二
判断模块413工作;
所述第一更新模块412,用于用与所述第二动态口令一致的动态口令对
应的动态因子更新所述第二缓存区中的数据,并设置第二偏移指针指
向所述第二数据组中与所述第二动态口令一致的动态口令对应的数据
;
所述第二判断模块413,用于判断与所述第二动态口令一致的动态口令
对应的数据在第二数据组中的顺序是否在所述第二偏移指针指向的数
据之后,是则认证通过,设置第二偏移指针指向第二数据组中与所述
第二动态口令一致的动态口令对应的数据,否则认证失败。
所述第一接收模块401还用于接收用户输入的令牌数据;
所述第二接收模块407还用于接收用户通过主机输入到服务器的数据;
所述第二生成模块408还用于生成挑战码。
所述第一计算模块404包括:
第三组合单元4041,用于将所述第一动态因子、所述当前数据、令牌
密钥与用户输入令牌的数据进行组合;
第四处理单元4042,用于调用所述预设算法对所述第三组合单元4041
组合得到的数据进行计算得到所述第一动态口令。
所述第二计算模块409包括:
第一调用单元4091,用于调用所述预设算法及所述认证窗口中的第一
动态因子;
第一组合单元4092,用于将所述第二数据组中的各个数据依次分别与
所述认证窗口中的各个动态因子进行组合;
第一处理单元4093,用于用所述预设算法对所述第一组合单元4092组
合得到的各数据分别进行计算,得到所述一组动态口令。
优选地,在本实施例中所述第二计算模块409还可以替换为包括:
第二调用单元,用于调用所述预设算法,用于依次调用所述认证窗口
中的动态因子;
第二组合单元,用于将所述第二数据组中的各个数据分别与调用的动
态因子组合;
第二处理单元,用于用所述预设算法对所述第一组合单元组合得到的
数据进行计算得到所述一组动态口令;
相应地,所述验证模块410包括:
第一验证单元,用于验证所述第二处理单元计算得到的所述一组动态
口令
中是否存在与所述第二动态口令一致的动态口令;
第一判断单元,用于当所述第一验证单元4101验证所述一组动态口令
中不存在与所述第二动态口令一致的动态口令时,判断当前调用的动
态因子是否为所述认证窗口中的最后一个动态因子,当判断当前动态
因子不为最后一个动态因子时,调用下一个动态因子,所述第二组合
单元工作。
或者,所述第二计算模块409包括:
查找单元,用于从所述认证窗口中查找到等于或大于第二缓存区中的
数据的动态因子;
第三处理单元,用于将大于所述第二缓存区中的数据的动态因子依次
分别与所述第二数据组中的各个数据进行组合,调用所述预设算法对
组合得到的数据分别进行计算,得到第一部分动态口令;将等于所述
第二缓存区中的数据的动态因子分别与所述第二数据组中第二偏移指
针指向的数据之后的各个数据进行组合,调用所述预设算法,对组合
得到各数据分别进行计算得到第二部分动态口令;将所述第一部分动
态口令与所述第二部分动态口令组成所述一组动态口令。
相应地,所述系统还包括:
第二更新模块,用于当所述验证模块410验证所述一组动态口令中存在
与所述第二动态口令一致的动态口令时,用与所述第二动态口令一致
的动态口令对应的动态因子更新所述第二缓存区中的数据,并将所述
第二偏移指针指向与所述第二动态口令一致的动态口令对应的第二数
据组中的数据。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发
明的精神
和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发
明的保护范围之内。