一种激活动态令牌的方法和装置制造方法

文档序号:7813151阅读:310来源:国知局
一种激活动态令牌的方法和装置制造方法
【专利摘要】本发明公开一种激活动态令牌的方法及装置,该方法包括:动态令牌通过按键接收激活码;根据预设的第一种子和接收到的激活码中的激活挑战码,生成第二种子;根据生成的第二种子,生成第二应答码;判断计算生成的第二应答码和接收到的激活码中的激活应答码是否一致,是则根据生成的第二种子更新预设的第一种子,激活成功,结束,否则显示错误信息,结束。本发明提供的一种激活动态令牌的方法,能够保证动态令牌中的新种子(第二种子)和认证服务器中的新种子是一致的,即保证了新种子的正确性。
【专利说明】一种激活动态令牌的方法和装置

【技术领域】
[0001]本发明涉及信息安全领域,尤其涉及一种激活动态令牌的方法和装置。

【背景技术】
[0002]动态令牌是用来生成动态口令的终端,动态口令可以确保用户的合法身份,从而在用户以合法身份登录的基础上保障用户业务访问的安全性。动态口令认证技术被认为是目前最有效解决用户认证的方法之一,从而被广泛应用在银行、证券、第三方支付、大企业内部等各类信息系统场景中。
[0003]在现有技术中,动态令牌接收到的激活码通常由挑战值和应答值组成,在激活过程中,动态令牌首先根据预设的种子和接收到的挑战值生成动态令牌的应答值,再根据接收到的应答值和生成的动态令牌的应答值判断是否激活成功,若激活成功则根据接收到的激活码生成新种子,这种激活的方式无法保证动态令牌激活后的新种子的正确性,若激活成功后动态令牌生成的新种子与认证服务其中的种子不同,则导致用户不能继续使用该动态令牌。


【发明内容】

[0004]本发明的目的是为了克服现有技术的不足,提供一种激活动态令牌的方法和装置,保证了激活成功后动态令牌中新种子的正确性,提高了使用动态令牌的安全性。
[0005]本发明提供的一种激活动态令牌的方法,包括:
[0006]步骤S1:所述动态令牌通过按键接收激活码;所述激活码包括激活挑战码和激活应答码;
[0007]步骤S2:所述动态令牌对预设的第一种子进行第一单向运算得到第一运算值,对所述激活码中的所述激活挑战码进行转换得到第二转换值,对所述第一种子进行第二单向运算得到第二运算值;
[0008]步骤S3:所述动态令牌根据所述第一运算值、所述第二转换值和所述第三运算值得到第四扩散值;
[0009]步骤S4:所述动态令牌根据所述第四扩散值和所述第三运算值,生成第二种子;所述第二种子包括第一数据和第二数据;
[0010]步骤S5:所述动态令牌对所述第二种子中的第一数据进行所述第一单向运算得到第五运算值,对所述第二种子中的第二数据进行补充得到种子补充值,对所述第二种子中的第一数据进行所述第二单向运算得到第七运算值;
[0011]步骤S6:所述动态令牌根据所述第五运算值、所述种子补充值和所述第七运算值得到第八运算值;
[0012]步骤S7:所述动态令牌根据所述第八运算值生成第二应答码;
[0013]步骤S8:所述动态令牌判断所述第二应答码和接收到的所述激活码中的激活应答码是否一致,是则执行步骤S9,否则显示错误信息,结束;
[0014]步骤S9:所述动态令牌根据所述第二种子更新预设的所述第一种子,激活成功,结束。
[0015]所述步骤S2之前包括:所述动态令牌判断接收到的所述激活码的长度是否为第一预设长度,是则执行步骤S2,否则显示错误信息,返回步骤SI。
[0016]所述对预设的第一种子进行第一单向运算得到第一运算值,具体为:
[0017]所述动态令牌对所述预设的第一种子和第一预设值进行异或运算,得到第一异或值;
[0018]所述动态令牌根据单向算法和第一常数对所述第一异或值进行运算,再根据运算结果和所述第一常数,得到所述第一运算值。
[0019]所述对所述激活码中的激活挑战码进行转换得到第二转换值,具体为:
[0020]所述动态令牌将所述激活码中的激活挑战码转换为16进制整数,得到第一转换值;
[0021]所述动态令牌对所述第一转换值进行补充,得到所述第二转换值。
[0022]所述对所述第一转换值进行补充,得到所述第二转换值,具体为:所述动态令牌在所述第一转换值后面填充第二预设值,根据所述第一异或值的长度和所述第一转换值的长度得到第一长度,将所述第一长度填充在所述第二预设值之后,并在所述第二预设值和所述第一长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述第二转换值。
[0023]所述对预设的第一种子进行第二单向运算得到第三运算值,具体为:
[0024]所述动态令牌对所述预设的第一种子和第三预设值进行异或运算,得到第二异或值;
[0025]所述动态令牌根据单向算法和第一常数对所述第二异或值进行运算,再根据运算结果和所述第一常数,得到所述第三运算值。
[0026]所述根据所述第一运算值、第二转换值和所述第三运算值得到第四扩散值,具体为:
[0027]所述动态令牌根据单向算法和所述第一运算值对所述第二转换值进行运算,得到第二扩散值,根据所述第二扩散值和所述第一运算值得到第二运算值,根据所述单向算法和所述第三运算值对所述第二运算值进行运算,得到第四扩散值。
[0028]所述对所述第二种子中的第一数据进行所述第一单向运算得到第五运算值,具体为:
[0029]所述动态令牌对所述第一数据和第一预设值进行异或运算,得到第三异或值;
[0030]所述动态令牌根据单向算法和第一常数对所述第三异或值进行运算,再根据运算结果和所述第一常数,得到所述第五运算值。
[0031]所述对所述第二种子中的第二数据进行补充得到种子补充值,具体为:所述动态令牌在所述第二数据后面填充第二预设值,根据所述第三异或值的长度和所述第二数据的长度得到第二长度,将所述第二长度填充在所述第二预设值之后,并在所述第二预设值和所述第二长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述种子补充值。
[0032]所述对所述第二种子中的第一数据进行所述第二单向运算得到第七运算值,具体为:
[0033]所述动态令牌对所述第一数据和第三预设值进行异或运算,得到第四异或值;
[0034]所述动态令牌根据单向算法和第一常数对所述第四异或值进行运算,再根据运算结果和所述第一常数,得到所述第七运算值。
[0035]所述根据所述第五运算值、所述种子补充值和所述第七运算值得到第八运算值,具体为:
[0036]所述动态令牌根据单向算法和所述第五运算值对所述种子补充值进行运算,得到第六扩散值,根据所述第六扩散值和所述第五运算值得到第六运算值,根据所述单向算法和所述第七运算值对所述第六运算值进行运算,得到第八扩散值,根据所述第八扩散值和所述第七运算值得到第八运算值。
[0037]所述步骤S7包括:
[0038]步骤S7-1:所述动态令牌根据所述第八运算值得到字节位置标识;
[0039]步骤S7-2:所述动态令牌从所述第八运算值中与所述字节位置标识对应的位置开始,获取4个字节的数据作为第一应答数据;
[0040]步骤S7-3:所述动态令牌将获取到的所述第一应答数据转换为10进制整数,得到第二应答数据;
[0041]步骤S7-4:所述动态令牌根据所述激活码的长度从所述第二应答数据中获取第二应答码。
[0042]所述根据第八运算值得到字节位置标识,具体为:所述动态令牌获取所述第八运算值的最后一个字节的低四位数据作为所述字节位置标识。
[0043]所述根据所述激活码的长度从所述第二应答数据中获取第二应答码,具体为:所述动态令牌将所述激活码的长度的一半作为所述第二应答码的长度,根据所述第二应答码的长度从所述第二应答数据的最低位开始获取所述第二应答码。
[0044]本发明提供一种激活动态令牌的装置,包括:接收模块、第一计算模块、第二计算模块、第一生成模块、第三计算模块、第四计算模块、第二生成模块、第一判断模块、显示模块和第一更新模块;
[0045]所述接收模块,用于通过按键接收激活码;所述激活码包括激活挑战码和激活应答码;
[0046]所述第一计算模块,用于对预设的第一种子进行第一单向运算得到第一运算值,对所述接收模块接收到的所述激活码中的所述激活挑战码进行转换得到第二转换值,对所述第一种子进行第二单向运算得到第三运算值;
[0047]所述第二计算模块,用于根据所述第一计算模块计算得到的所述第一运算值、所述第二转换值和所述第三运算值得到第四扩散值;
[0048]所述第一生成模块,用于根据所述第二计算模块计算得到的所述第四扩散值和所述第一计算模块计算得到的所述第三运算值,生成第二种子;所述第二种子包括第一数据和第二数据;
[0049]所述第三计算模块,用于对所述第一生成模块生成的所述第二种子中的第一数据进行所述第一单向运算得到第五运算值,对所述第一生成模块生成的所述第二种子中的第二数据进行补充得到种子补充值,对所述第一生成模块生成的所述第二种子中的第一数据进行所述第二单向运算得到第七运算值;
[0050]所述第四计算模块,用于根据所述第三计算模块计算得到的所述第五运算值、所述种子补充值和所述第七运算值得到第八运算值;
[0051 ] 所述第二生成模块,用于根据所述第四计算模块计算得到的所述第八运算值生成第二应答码;
[0052]所述第一判断模块,用于判断所述第二生成模块生成的所述第二应答码和所述接收模块接收到的所述激活码中的激活应答码是否一致;
[0053]所述显示模块,用于在所述第一判断模块判断所述第二应答码和所述激活应答码不一致时,显示错误信息;
[0054]所述第一更新模块,用于在所述第一判断模块判断所述第二应答码和所述激活应答码一致时,根据所述第一生成模块生成的所述第二种子更新预设的所述第一种子。
[0055]所述装置包括第二判断模块,用于判断所述接收模块接收到的所述激活码的长度是否为第一预设长度;
[0056]所述第一计算模块,还用于在所述第二判断模块判断为是时,进行工作;
[0057]所述显示模块,还用于在所述第二判断模块判断为否时,显示错误信息。
[0058]所述第一计算模块包括:第一异或单元和第一运算单元;
[0059]所述第一异或单元,用于对所述预设的第一种子和第一预设值进行异或运算,得到第一异或值;
[0060]所述第一运算单元,用于根据单向算法和第一常数对所述第一异或单元得到的所述第一异或值进行运算,再根据运算结果和所述第一常数,得到所述第一运算值。
[0061]所述第一计算模块还包括:第一转换单元和第一补充单元;
[0062]所述第一转换单元,用于将所述接收模块接收到的所述激活码中的激活挑战码转换为16进制整数,得到第一转换值;
[0063]所述第一补充单元,用于对所述第一转换单元得到的所述第一转换值进行补充,得到所述第二转换值。
[0064]所述第一补充单元具体用于在所述第一转换值后面填充第二预设值,根据所述第一异或值的长度和所述第一转换值的长度得到第一长度,将所述第一长度填充在所述第二预设值之后,并在所述第二预设值和所述第一长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述第二转换值。
[0065]所述第一异或单元,还用于对所述预设的第一种子和第三预设值进行异或运算,得到第二异或值;
[0066]所述第一运算单元,还用于根据单向算法和第一常数对所述第一异或单元得到的所述第二异或值进行运算,再根据运算结果和所述第一常数,得到所述第三运算值。
[0067]所述第二计算模块具体用于:根据单向算法和所述第一运算值对所述第二转换值进行运算,得到第二扩散值,根据所述第二扩散值和所述第一运算值得到第二运算值,根据所述单向算法和所述第三运算值对所述第二运算值进行运算,得到第四扩散值。
[0068]所述第三计算模块包括:第二异或单元和第二运算单元;
[0069]所述第二异或单元,用于对所述第一生成模块得到的所述第一数据和第一预设值进行异或运算,得到第三异或值;
[0070]所述第二运算单元,用于根据单向算法和第一常数对所述第二异或单元得到的所述第三异或值进行运算,再根据运算结果和所述第一常数,得到所述第五运算值。
[0071]所述第三计算模块还包括第二补充单元,用于在所述第二数据后面填充第二预设值,根据所述第三异或值的长度和所述第二数据的长度得到第二长度,将所述第二长度填充在所述第二预设值之后,并在所述第二预设值和所述第二长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述种子补充值。
[0072]所述第二异或单元,还用于对所述第一生成模块得到的所述第一数据和第三预设值进行异或运算,得到第四异或值;
[0073]所述第二运算单元,还用于根据单向算法和第一常数对所述第二异或单元得到的所述第四异或值进行运算,再根据运算结果和所述第一常数,得到所述第七运算值。
[0074]所述第四计算模块具体用于:根据单向算法和所述第五运算值对所述种子补充值进行运算,得到第六扩散值,根据所述第六扩散值和所述第五运算值得到第六运算值,根据所述单向算法和所述第七运算值对所述第六运算值进行运算,得到第八扩散值,根据所述第八扩散值和所述第七运算值得到第八运算值。
[0075]所述第二生成模块包括:第一获取单元、第二获取单元、第二转换单元和第三获取单元;
[0076]所述第一获取单元,用于根据所述第四计算模块得到的所述第八运算值得到字节位置标识;
[0077]所述第二获取单元,用于从所述第四计算模块得到的所述第八运算值中,与所述第一获取单元得到的所述字节位置标识对应的位置开始,获取4个字节的数据作为第一应答数据;
[0078]所述第二转换单元,用于将所述第二获取单元获取到的所述第一应答数据转换为10进制整数,得到第二应答数据;
[0079]所述第三获取单元,用于根据所述接收模块接收到的所述激活码的长度,从所述第二转换单元得到的所述第二应答数据中获取所述第二应答码。
[0080]所述第一获取单元具体用于,获取所述第八运算值的最后一个字节的低四位数据作为所述字节位置标识。
[0081]所述第三获取单元,具体用于将所述激活码的长度的一半作为所述第二应答码的长度,根据所述第二应答码的长度从所述第二应答数据的最低位开始获取所述第二应答码。
[0082]本发明与现有技术相比,具有以下优点:
[0083]本发明提供的一种激活动态令牌的方法和装置,由于动态令牌中的新种子(第二种子)是根据旧种子(第一种子)和用户输入的激活码,通过包括单向算法的一系列运算生成的,保证了动态令牌中的新种子(第二种子)的安全性,提高了使用动态令牌的安全性;在激活过程中,动态令牌首先根据预设的种子和接收到的挑战值生成新种子(第二种子),再根据新种子(第二种子)生成动态令牌的应答值,根据接收到的应答值和动态令牌生成的应答值判断是否激活成功,若激活成功则动态令牌用新种子(第二种子)更新旧种子(第一种子),这种激活的方式能够保证动态令牌中的新种子(第二种子)和认证服务器中的新种子是一致的,即保证了新种子的正确性。

【专利附图】

【附图说明】
[0084]图1是本发明实施例1提供的一种激活动态令牌的方法的流程图;
[0085]图2是本发明实施例2提供的一种激活动态令牌的方法的流程图;
[0086]图3是本发明实施例2中步骤103的流程图;
[0087]图4是本发明实施例2中步骤104的流程图;
[0088]图5是本发明实施例3提供的一种激活动态令牌的装置的模块图。

【具体实施方式】
[0089]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0090]实施例1
[0091]本发明的实施例1提供了一种激活动态令牌的方法,如图1所示,包括:
[0092]步骤S1:动态令牌通过按键接收激活码;
[0093]具体地,激活码包括激活挑战码和激活应答码;
[0094]步骤S2:动态令牌对预设的第一种子进行第一单向运算得到第一运算值,对激活码中的激活挑战码进行转换得到第二转换值,对第一种子进行第二单向运算得到第三运算值;
[0095]步骤S3:动态令牌根据第一运算值、第二转换值和第三运算值得到第四扩散值;
[0096]步骤S4:动态令牌根据第四扩散值和第三运算值生成第二种子;
[0097]具体地,第二种子包括第一数据和第二数据;
[0098]步骤S5:动态令牌对第二种子中的第一数据进行第一单向运算得到第五运算值,对第二种子中的第二数据进行补充得到种子补充值,对第二种子中的第一数据进行第二单向运算得到第七运算值;
[0099]步骤S6:动态令牌根据第五运算值、种子补充值和第七运算值得到第八运算值;
[0100]步骤S7:动态令牌根据第八运算值生成第二应答码;
[0101]步骤S8:动态令牌判断第二应答码和接收到的激活码中的激活应答码是否一致,是则执行步骤S9,否则显示错误信息,结束;
[0102]步骤S9:动态令牌根据第二种子更新预设的第一种子,激活成功,结束。
[0103]本实施例提供的一种激活动态令牌的方法,由于动态令牌中的第二种子是根据第一种子和用户输入的激活码,通过包括单向算法的一系列运算生成的,保证了动态令牌中的第二种子的安全性,提高了使用动态令牌的安全性;在激活过程中,动态令牌首先根据预设的种子和接收到的挑战值生成第二种子,再根据第二种子生成动态令牌的应答值,根据接收到的应答值和动态令牌生成的应答值判断是否激活成功,若激活成功则动态令牌用第二种子更新第一种子,这种激活的方法能够保证动态令牌中的第二种子和认证服务器中的新种子是一致的,即保证了新种子的正确性。
[0104]实施例2
[0105]本发明的实施例2提供了一种激活动态令牌的方法,如图2所示,包括:
[0106]步骤101:动态令牌通过按键接收激活码;
[0107]例如,本实施例中,激活码为123456258656 ;
[0108]步骤102:动态令牌判断接收到的激活码的长度是否为第一预设长度,是则执行步骤103,否则显示错误信息,返回步骤101 ;
[0109]具体地,激活码包括激活挑战码和激活应答码;动态令牌将激活码拆分成等长的两部分,前一部分为激活挑战码,后一部分为激活应答码;
[0110]例如,激活码为123456258656,其中,激活挑战码为123456,激活应答码为258656 ;
[0111]步骤103:动态令牌根据预设的第一种子和接收到的激活码中的激活挑战码,生成第二种子;
[0112]例如,本实施例中,预设的第一种子为:
[0113]0102030405060708090a0b0c0d0e0fl011121314
[0114]接收到的激活码中的激活挑战码为123456 ;
[0115]生成的第二种子为:302R)BC29A10D098676E4202A534B2C33E67DF4D;
[0116]具体地,第二种子包括第一数据和第二数据;动态令牌将第二种子拆分成等长的两部分,前一部分为第一数据,后一部分为第二数据;
[0117]例如,第二种子中的第一数据为302R)BC29A10D098676E,第二种子中的第二数据为:4202A534B2C33E67DF4D ;
[0118]步骤104:动态令牌根据生成的第二种子,生成第二应答码;
[0119]例如,生成的第二应答码为258656 ;
[0120]步骤105:动态令牌判断计算生成的第二应答码和接收到的激活码中的激活应答码是否一致,是则执行步骤106,否则显示错误信息,结束;
[0121]例如,本实施例中,生成的第二应答码和接收到的激活码中的激活应答码均为258656,则执行步骤106 ;
[0122]步骤106:动态令牌根据生成的第二种子更新预设的第一种子,激活成功,结束;
[0123]例如,本实施例中,动态令牌用第二种子302F0BC29A10D098676E4202A534B2C33E67DF4D 更新第一种子 0102030405060708090a0b0c0d0e0fl011121314 ;
[0124]如图3所示,本实施例中,步骤103中动态令牌根据预设的第一种子和接收到的激活码中的激活挑战码,生成第二种子,包括:
[0125]步骤AOl:动态令牌对预设的第一种子和第一预设值进行异或运算,得到第一异或值;
[0126]优选地,第一预设值为0x36 ;
[0127]例如,预设的第一种子为0102030405060708090a0b0c0d0e0fl011121314,第一种子与0x36异或结果,即第一异或值为:
[0128]373435323330313E3F3C3D3A3B383926272425223636363636363636363636363636363636363636363636363636363636363636363636363636363636363636 ;
[0129]步骤A02:动态令牌根据单向算法和第一常数对第一异或值进行运算,得到第一扩散值;
[0130]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0131]例如,本实施例中,第一常数为:
[0132]67452301EFCDAB8998BADCFE10325476C3D2E1F0 ;
[0133]根据第一常数对第一异或值373435323330313E3F3C3D3A3B383926272425223636363636363636363636363636363636363636363636363636363636363636363636363636363636363636进行SHAl扩散运算,得到第一扩散值为:
[0134]9145DC6E9B7AE9B7CEAE940FE0FB70A09C36A8C7 ;
[0135]步骤A03:动态令牌根据第一扩散值和第一常数,得到第一运算值;
[0136]具体地,本实施例中,动态令牌分别将第一扩散值和第一常数按照每组4个字节的数据进行分组,将第一扩散值和第一常数对应的组中的4个字节的数据进行算术加,相邻的组之间不进行进位,得到第一运算值;
[0137]例如,第一扩散值为:914roC6E9B7AE9B7CEAE940FE0FB70A09C36A8C7;
[0138]第一常数为:67452301EFCDAB8998BADCFE10325476C3D2E1R);
[0139]得到的第一运算值为:F88AFF6F8B4895406769710DF12DC51660098AB7;
[0140]步骤A04:动态令牌将接收到的激活码中的激活挑战码转换为16进制整数,得到第一转换值;
[0141]例如,激活挑战码为123456,转换为16进制整数,即第一转换值为:0X0001E240 ;
[0142]步骤A05:动态令牌对第一转换值进行补充,得到第二转换值;
[0143]具体地,动态令牌在第一转换值后面填充第二预设值,根据第一异或值的长度和第一转换值的长度得到第一长度,将第一长度填充在第二预设值之后,并在第二预设值和第一长度之间补0x00,使补充后的数据长度为512位的整数倍,得到第二转换值;
[0144]优选地,第二预设值为0x80,第一异或值的长度加上第一转换值的长度得到第一长度;
[0145]例如,第一转换值为:0001E240,第一异或值的长度为64字节,第一转换值的长度为4字节,得到的第一长度为出4+4)*8 = 0x0220 ;补充得到的第二转换值为:
[0146]0001E240800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000220 ;
[0147]步骤A06:动态令牌根据单向算法和第一运算值对第二转换值进行运算,得到第二扩散值;
[0148]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0149]例如,第一运算值为:F88AFF6F8B4895406769710DF12DC51660098AB7;
[0150]第二转换值为:
[0151 ] 0001E240800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000220 ;
[0152]得到的第二扩散值为:C21C444A3A3CF97128A928618AFD2ED98272EF66;
[0153]步骤A07:动态令牌根据第二扩散值和第一运算值,得到第二运算值;
[0154]具体地,本实施例中,动态令牌分别将第二扩散值和第一运算值按照每组4个字节的数据进行分组,将第二扩散值和第一运算值对应的组中的4个字节的数据进行算术力口,相邻的组之间不进行进位,得到第二运算值;
[0155]例如,第二扩散值为:C21C444A3A3CF97128A928618AFD2ED98272EF66;
[0156]第一运算值为:F88AFF6F8B4895406769710DF12DC51660098AB7;
[0157]得到的第二运算值为:BAA743B9C5858EB19012996E7C2AF3EFE07C7A1D;
[0158]步骤A08:动态令牌对预设的第一种子和第三预设值进行异或运算,得到第二异或值;
[0159]优选地,第三预设值为0x5c ;
[0160]例如,预设的第一种子为0102030405060708090a0b0c0d0e0fl011121314,第一种子与0x5c异或结果,即第二异或值为:
[0161]5D5E5F58595A5B54555657505152534C4D4E4F485C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C ;
[0162]步骤A09:动态令牌根据单向算法和第一常数对第二异或值进行运算,得到第三扩散值;
[0163]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0164]例如,第一常数为:67452301EFCDAB8998BADCFE10325476C3D2E1R);
[0165]根据第一常数对第二异或值OT5E5F58595A5B54555657505152534C4D4E4
[0166]F485C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C 进行 SHAl 扩散运算,得到第三扩散值为:478E9C59D5F2D4FD370495C36494C71984650018 ;
[0167]步骤AlO:动态令牌根据第三扩散值和第一常数,得到第三运算值;
[0168]具体地,本实施例中,动态令牌分别将第三扩散值和第一常数按照每组4个字节的数据进行分组,将第三扩散值和第一常数对应的组中的4个字节的数据进行算术加,相邻的组之间不进行进位,得到第三运算值;
[0169]例如,第三扩散值为:478E9C59D5F2D4FD370495C36494C71984650018;
[0170]第一常数为:67452301EFCDAB8998BADCFE10325476C3D2E1R);
[0171]得到的第三运算值为:AED3BF5AC5C08086CFBF72C174C71B8F4837E208;
[0172]步骤All:动态令牌根据单向算法和第三运算值对第二运算值进行运算,得到第四扩散值;
[0173]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0174]例如,第三运算值为:AED3BF5AC5C08086CFBF72C174C71B8F4837E208;
[0175]第二运算值为:BAA743B9C5858EB19012996E7C2AF3EFE07C7A1D;
[0176]得到的第四扩散值为:815B4C68D450501297AECF41306D9734F62FFD45;
[0177]步骤A12:动态令牌根据第四扩散值和第三运算值,得到第四运算值作为第二种子;
[0178]具体地,本实施例中,动态令牌分别将第四扩散值和第三运算值按照每组4个字节的数据进行分组,将第四扩散值和第三运算值对应的组中的4个字节的数据进行算术力口,相邻的组之间不进行进位,得到第四运算值;
[0179]例如,第四扩散值为:815B4C68D450501297AECF41306D9734F62FFD45;
[0180]第三运算值为:AED3BF5AC5C08086CFBF72C174C71B8F4837E208;
[0181]得到第四运算值作为第二种子,即第二种子为:
[0182]302F0BC29A10D098676E4202A534B2C33E67DF4D ;
[0183]如图4所示,本实施例中,步骤104中动态令牌根据生成的第二种子生成第二应答码,包括:
[0184]步骤BOl:动态令牌获取第二种子中的第一数据,对第一数据和第一预设值进行异或运算,得到第三异或值;
[0185]具体地,动态令牌将第二种子拆分成等长的两部分,前一部分为第一数据;
[0186]优选地,第一预设值为0x36 ;
[0187]例如,第二种子中的第一数据为302F0BC29A10D098676E,第一数据与0x36异或结果,即第三异或值为:
[0188]06193DF4AC26E6AE5158363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636 ;
[0189]步骤B02:动态令牌根据单向算法和第一常数对第三异或值进行运算,得到第五扩散值;
[0190]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0191]例如,本实施例中,第一常数为:
[0192]67452301EFCDAB8998BADCFE10325476C3D2E1F0 ;
[0193]根据第一常数对第三异或值06193DF4AC26E6AE5158363636363636363636
[0194]363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636进行SHAl扩散运算,得到第五扩散值为:
[0195]893F911A1A13AD83B9F01D9EEF554C72FA17C14D ;
[0196]步骤B03:动态令牌根据第五扩散值和第一常数,得到第五运算值;
[0197]具体地,本实施例中,动态令牌分别将第五扩散值和第一常数按照每组4个字节的数据进行分组,将第五扩散值和第一常数对应的组中的4个字节的数据进行算术加,相邻的组之间不进行进位,得到第五运算值;
[0198]例如,第五扩散值为:893F911A1A13AD83B9R)1D9EEF554C72FA17C14D;
[0199]第一常数为:67452301EFCDAB8998BADCFE10325476C3D2E1R);
[0200]得到的第五运算值为:
[0201]F084B41B09E1590C52AAFA9CFF87A0E8BDEAA33D ;
[0202]步骤B04:动态令牌获取第二种子中的第二数据,对第二数据进行补充,得到种子补充值;
[0203]具体地,动态令牌将第二种子拆分成等长的两部分,前一部分为第一数据,后一部分为第二数据;动态令牌在第二数据后面填充第二预设值,根据第三异或值的长度和第二数据的长度得到第二长度,将第二长度填充在第二预设值之后,并在第二预设值和第二长度之间补0x00,使补充后的数据长度为512位的整数倍,得到种子补充值;
[0204]例如,第二预设值为0x80,第三异或值的长度加上第二数据的长度得到第二长度;
[0205]例如,第二数据为:4202A534B2C33E67DF4D,第三异或值的长度为64字节,第二数据的长度为10字节,得到的第二长度为(64+10)*8 = 0x0250 ;补充得到的种子补充值为:
[0206]4202A534B2C33E67DF4D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000250 ;
[0207]步骤B05:动态令牌根据单向算法和第五运算值对种子补充值进行运算,得到第六扩散值;
[0208]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0209]例如,第五运算值为:
[0210]F084B41B09E1590C52AAFA9CFF87A0E8BDEAA33D ;
[0211]种子补充值为:
[0212]4202A534B2C33E67DF4D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000250 ;
[0213]得到的第六扩散值为:800D67401C55037C24521784F6F5C2225623FC7C;
[0214]步骤B06:动态令牌根据第六扩散值和第五运算值,得到第六运算值;
[0215]具体地,本实施例中,动态令牌分别将第六扩散值和第五运算值按照每组4个字节的数据进行分组,将第六扩散值和第五运算值对应的组中的4个字节的数据进行算术力口,相邻的组之间不进行进位,得到第六运算值;
[0216]例如,第六扩散值为:800D67401C55037C24521784F6F5C2225623FC7C;
[0217]第五运算值为:F084B41B09E1590C52AAFA9CFF87A0E8BDEAA33D;
[0218]得到的第六运算值为:70921B5B26365C8876FD1220F67D630A140E9FB9;
[0219]步骤B07:动态令牌对第二种子中的第一数据和第三预设值进行异或运算,得到第四异或值;
[0220]优选地,第三预设值为0x5c ;
[0221]例如,第二种子中的第一数据为302R)BC29A10D098676E,第二种子中的第一数据与0x5c异或结果,即第四异或值为:
[0222]6C73579EC64C8CC43B325C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C ;
[0223]步骤B08:动态令牌根据单向算法和第一常数对第四异或值进行运算,得到第七扩散值;
[0224]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0225]例如:第一常数为:67452301EFCDAB8998BADCFE10325476C3D2E1R);
[0226]根据第一常数对第四异或值6C73579EC64C8CC43B325C5C5C5C5C5C5C5
[0227]C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C进行SHAl扩散运算,得到第七扩散值为:
[0228]A98BE59B0871A3DC41DB81B338FB26E9D2944583 ;
[0229]步骤B09:动态令牌根据第七扩散值和第一常数,得到第七运算值;
[0230]具体地,本实施例中,动态令牌分别将第七扩散值和第一常数按照每组4个字节的数据进行分组,将第七扩散值和第一常数对应的组中的4个字节的数据进行算术加,相邻的组之间不进行进位,得到第七运算值;
[0231]例如,第七扩散值为:A98BE59B0871A3DC41DB81B338FB26E9D2944583;
[0232]第一常数为:67452301EFCDAB8998BADCFE10325476C3D2E1R);
[0233]得到的第七运算值为:10D1089CF83F4F65DA965EB1492D7B5F96672773;
[0234]步骤BlO:动态令牌根据单向算法和第七运算值对第六运算值进行运算,得到第八扩散值;
[0235]优选地,本实施例中,单向算法为SHAl扩散运算;除此之外,单向算法还可以为SHA256运算,SHA512运算,SM3运算;
[0236]例如,第七运算值为:10D1089CF83F4F65DA965EB1492D7B5F96672773;
[0237]第六运算值为:70921B5B26365C8876FD1220F67D630A140E9FB9;
[0238]得到的第八扩散值为:
[0239]410EB70F2A19B2FBE83CF53AFBA3C9AA0D18D2A1 ;
[0240]步骤Bll:动态令牌根据第八扩散值和第七运算值,得到第八运算值;
[0241]具体地,本实施例中,动态令牌分别将第八扩散值和第七运算值按照每组4个字节的数据进行分组,将第八扩散值和第七运算值对应的组中的4个字节的数据进行算术力口,相邻的组之间不进行进位,得到第八运算值;
[0242]例如,第八扩散值为:410EB70F2A19B2FBE83CF53AFBA3C9AA0D18D2A1;
[0243]第七运算值为:10D1089CF83F4F65DA965EB1492D7B5F96672773;
[0244]得到的第八运算值为:51DFBFAB22590260C2D353EB44D14509A37FFA14;
[0245]步骤B12:动态令牌根据第八运算值得到字节位置标识;
[0246]具体地,动态令牌获取第八运算值的最后一个字节的低四位数据作为字节位置标识;
[0247]例如,第八运算值为51DFBFAB22590260C2D353EB44D14509A37FFA14,第八运算值的最后一个字节为0x14,第八运算值的最后一个字节的低四位数据,即字节位置标识为4 ;
[0248]步骤B13:动态令牌从第八运算值中与字节位置标识对应的位置开始,获取4个字节的数据作为第一应答数据;
[0249]例如,第八运算值为51DFBFAB22590260C2D353EB44D14509A37FFA14,字节位置标识为4,动态令牌从第八运算值的第4个字节开始,获取到的4个字节的数据为22590260,即第一应答数据为22590260 ;
[0250]步骤B14:动态令牌将获取到的第一应答数据转换为10进制整数,得到第二应答数据;
[0251]例如,第一应答数据为22590260,转换为10进制整数,得到的第二应答数据为:576258656 ;
[0252]步骤B15:动态令牌根据激活码的长度从第二应答数据中获取第二应答码;
[0253]具体地,本实施例中,动态令牌将激活码的长度的1/2作为第二应答码的长度,根据第二应答码的长度从第二应答数据的最低位开始获取第二应答码;
[0254]例如,激活码为123456258656,激活码的长度为12位,则第二应答码的长度为6位,因此动态令牌获取第二应答数据的低6位数据作为第二应答码,即第二应答码为258656。
[0255]本实施例提供的一种激活动态令牌的方法,由于动态令牌中的新种子(第二种子)是根据旧种子(第一种子)和用户输入的激活码,通过包括单向算法的一系列运算生成的,保证了动态令牌中的新种子(第二种子)的安全性,提高了使用动态令牌的安全性;在激活过程中,动态令牌首先根据预设的种子和接收到的挑战值生成新种子(第二种子),再根据新种子(第二种子)生成动态令牌的应答值,根据接收到的应答值和生成的动态令牌的应答值判断是否激活成功,若激活成功则动态令牌用新种子(第二种子)更新旧种子(第一种子),这种激活的方式能够保证动态令牌中的新种子(第二种子)和认证服务器中的新种子是一致的,即保证了新种子的正确性。
[0256]实施例3
[0257]本发明的实施例3提供了一种激活动态令牌的装置,如图5所示,包括:接收模块301、第一计算模块302、第二计算模块303、第一生成模块304、第三计算模块305、第四计算模块306、第二生成模块307、第一判断模块308、显示模块309和第一更新模块310 ;
[0258]接收模块301,用于通过按键接收激活码;
[0259]具体地,激活码包括激活挑战码和激活应答码;
[0260]第一计算模块302,用于对预设的第一种子进行第一单向运算得到第一运算值,对接收模块301接收到的激活码中的激活挑战码进行转换得到第二转换值,对第一种子进行第二单向运算得到第三运算值;
[0261]第二计算模块303,用于根据第一计算模块302计算得到的第一运算值、第二转换值和第三运算值得到第四扩散值;
[0262]第一生成模块304,用于根据第二计算模块303计算得到的第四扩散值和第一计算模块302计算得到的第三运算值,生成第二种子;
[0263]具体地,第二种子包括第一数据和第二数据;
[0264]第三计算模块305,用于对第一生成模块304生成的第二种子中的第一数据进行第一单向运算得到第五运算值,对第一生成模块304生成的第二种子中的第二数据进行补充得到种子补充值,对第一生成模块304生成的第二种子中的第一数据进行第二单向运算得到第七运算值;
[0265]第四计算模块306,用于根据第三计算模块305计算得到的第五运算值、种子补充值和第七运算值得到第八运算值;
[0266]第二生成模块307,用于根据第四计算模块306计算得到的第八运算值生成第二应答码;
[0267]第一判断模块308,用于判断第二生成模块307生成的第二应答码和接收模块301接收到的激活码中的激活应答码是否一致;
[0268]显示模块309,用于在第一判断模块308判断第二应答码和激活应答码不一致时,显示错误信息;
[0269]第一更新模块310,用于在第一判断模块308判断第二应答码和激活应答码一致时,根据第一生成模块304生成的第二种子更新预设的第一种子。
[0270]装置包括第二判断模块,用于判断接收模块301接收到的激活码的长度是否为第一预设长度;
[0271]第一计算模块302,还用于在第二判断模块判断为是时,进行工作;
[0272]显示模块309,还用于在第二判断模块判断为否时,显示错误信息。
[0273]第一计算模块302包括:第一异或单元和第一运算单元;
[0274]第一异或单元,用于对预设的第一种子和第一预设值进行异或运算,得到第一异或值;
[0275]第一运算单元,用于根据单向算法和第一常数对第一异或单元得到的第一异或值进行运算,再根据运算结果和第一常数,得到第一运算值。
[0276]第一计算模块302还包括:第一转换单元和第一补充单元;
[0277]第一转换单元,用于将接收模块301接收到的激活码中的激活挑战码转换为16进制整数,得到第一转换值;
[0278]第一补充单元,用于对第一转换单元得到的第一转换值进行补充,得到第二转换值。
[0279]第一补充单元具体用于在第一转换值后面填充第二预设值,根据第一异或值的长度和第一转换值的长度得到第一长度,将第一长度填充在第二预设值之后,并在第二预设值和第一长度之间补0x00,使补充后的数据长度为512位的整数倍,得到第二转换值。
[0280]第一计算模块302中,
[0281]第一异或单元,还用于对预设的第一种子和第三预设值进行异或运算,得到第二异或值;
[0282]第一运算单元,还用于根据单向算法和第一常数对第一异或单元得到的第二异或值进行运算,再根据运算结果和第一常数,得到第三运算值。
[0283]第二计算模块303具体用于:根据单向算法和第一运算值对第二转换值进行运算,得到第二扩散值,根据第二扩散值和第一运算值得到第二运算值,根据单向算法和第三运算值对第二运算值进行运算,得到第四扩散值。
[0284]第三计算模块305包括:第二异或单元和第二运算单元;
[0285]第二异或单元,用于对第一生成模块304得到的第一数据和第一预设值进行异或运算,得到第三异或值;
[0286]第二运算单元,用于根据单向算法和第一常数对第二异或单元得到的第三异或值进行运算,再根据运算结果和第一常数,得到第五运算值。
[0287]第三计算模块305还包括第二补充单元,用于在第二数据后面填充第二预设值,根据第三异或值的长度和第二数据的长度得到第二长度,将第二长度填充在第二预设值之后,并在第二预设值和第二长度之间补0x00,使补充后的数据长度为512位的整数倍,得到种子补充值。
[0288]第三计算模块305中,
[0289]第二异或单元,还用于对第一生成模块304得到的第一数据和第三预设值进行异或运算,得到第四异或值;
[0290]第二运算单元,还用于根据单向算法和第一常数对第二异或单元得到的第四异或值进行运算,再根据运算结果和第一常数,得到第七运算值。
[0291]第四计算模块306具体用于:根据单向算法和第五运算值对种子补充值进行运算,得到第六扩散值,根据第六扩散值和第五运算值得到第六运算值,根据单向算法和第七运算值对第六运算值进行运算,得到第八扩散值,根据第八扩散值和第七运算值得到第八运算值。
[0292]第二生成模块307包括:第一获取单元、第二获取单元、第二转换单元和第三获取单元;
[0293]第一获取单元,用于根据第四计算模块306得到的第八运算值得到字节位置标识;
[0294]第二获取单元,用于从第四计算模块306得到的第八运算值中,与第一获取单元得到的字节位置标识对应的位置开始,获取4个字节的数据作为第一应答数据;
[0295]第二转换单元,用于将第二获取单元获取到的第一应答数据转换为10进制整数,得到第二应答数据;
[0296]第三获取单元,用于根据接收模块301接收到的激活码的长度,从第二转换单元得到的第二应答数据中获取第二应答码。
[0297]第一获取单元具体用于,获取第八运算值的最后一个字节的低四位数据作为字节位置标识。
[0298]第三获取单元,具体用于将激活码的长度的一半作为第二应答码的长度,根据第二应答码的长度从第二应答数据的最低位开始获取第二应答码。
[0299]本实施例提供的一种激活动态令牌的装置,由于第二种子是根据第一种子和用户输入的激活码,通过包括单向算法的一系列运算生成的,保证了第二种子的安全性,提高了使用动态令牌的安全性;在激活时,装置首先根据预设的种子和接收到的挑战值生成第二种子,再根据第二种子生成应答值,根据接收到的应答值和生成的应答值判断是否激活成功,若激活成功则用第二种子更新第一种子,这种激活的装置能够保证动态令牌中的第二种子和认证服务器中的新种子是一致的,即保证了新种子的正确性。
[0300]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种激活动态令牌的方法,其特征在于,所述方法包括: 步骤S1:所述动态令牌通过按键接收激活码,所述激活码包括激活挑战码和激活应答码; 步骤S2:所述动态令牌对预设的第一种子进行第一单向运算,得到第一运算值;对所述激活挑战码进行转换,得到第二转换值;对所述第一种子进行第二单向运算,得到第三运算值; 步骤S3:所述动态令牌根据所述第一运算值、所述第二转换值和所述第三运算值,得到第四扩散值; 步骤S4:所述动态令牌根据所述第四扩散值和所述第三运算值,生成第二种子,所述第二种子包括第一数据和第二数据; 步骤S5:所述动态令牌对所述第一数据进行第一单向运算,得到第五运算值;对所述第二数据进行补充,得到种子补充值;对所述第一数据进行第二单向运算,得到第七运算值; 步骤S6:所述动态令牌根据所述第五运算值、所述种子补充值和所述第七运算值,得到第八运算值; 步骤S7:所述动态令牌根据所述第八运算值,生成第二应答码; 步骤S8:所述动态令牌判断所述第二应答码和接收到的所述激活应答码是否一致,是则执行步骤S9,否则显示错误信息,结束; 步骤S9:所述动态令牌根据所述第二种子更新所述第一种子,激活成功,结束。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2之前包括:所述动态令牌判断所述激活码的长度是否为第一预设长度,是则执行步骤S2,否则显示错误信息,返回步骤SI。
3.根据权利要求1所述的方法,其特征在于,所述动态令牌对预设的第一种子进行第一单向运算,得到第一运算值,具体为: 所述动态令牌对所述第一种子和第一预设值进行异或运算,得到第一异或值; 所述动态令牌根据单向算法和第一常数对所述第一异或值进行运算,再根据运算结果和所述第一常数,得到所述第一运算值。
4.根据权利要求3所述的方法,其特征在于,所述动态令牌对所述激活挑战码进行转换,得到第二转换值,具体为: 所述动态令牌将所述激活挑战码转换为16进制整数,得到第一转换值; 所述动态令牌对所述第一转换值进行补充,得到所述第二转换值。
5.根据权利要求4所述的方法,其特征在于,所述动态令牌对所述第一转换值进行补充,得到所述第二转换值,具体为: 所述动态令牌在所述第一转换值后面填充第二预设值,根据所述第一异或值的长度和所述第一转换值的长度得到第一长度,将所述第一长度填充在所述第二预设值之后,并在所述第二预设值和所述第一长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述第二转换值。
6.根据权利要求1所述的方法,其特征在于,所述动态令牌对所述第一种子进行第二单向运算,得到第三运算值,具体为: 所述动态令牌对所述第一种子和第三预设值进行异或运算,得到第二异或值; 所述动态令牌根据单向算法和第一常数对所述第二异或值进行运算,再根据运算结果和所述第一常数,得到所述第三运算值。
7.根据权利要求1所述的方法,其特征在于,所述动态令牌根据所述第一运算值、第二转换值和所述第三运算值,得到第四扩散值,具体为: 所述动态令牌根据单向算法和所述第一运算值对所述第二转换值进行运算,得到第二扩散值;根据所述第二扩散值和所述第一运算值,得到第二运算值;根据所述单向算法和所述第三运算值对所述第二运算值进行运算,得到第四扩散值。
8.根据权利要求1所述的方法,其特征在于,所述动态令牌对所述第一数据进行第一单向运算,得到第五运算值,具体为: 所述动态令牌对所述第一数据和第一预设值进行异或运算,得到第三异或值; 所述动态令牌根据单向算法和第一常数对所述第三异或值进行运算,再根据运算结果和所述第一常数,得到所述第五运算值。
9.根据权利要求8所述的方法,其特征在于,所述动态令牌对所述第二数据进行补充,得到种子补充值,具体为: 所述动态令牌在所述第二数据后面填充第二预设值,根据所述第三异或值的长度和所述第二数据的长度得到第二长度,将所述第二长度填充在所述第二预设值之后,并在所述第二预设值和所述第二长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述种子补充值。
10.根据权利要求1所述的方法,其特征在于,所述动态令牌对所述第一数据进行第二单向运算,得到第七运算值,具体为: 所述动态令牌对所述第一数据和第三预设值进行异或运算,得到第四异或值; 所述动态令牌根据单向算法和第一常数对所述第四异或值进行运算,再根据运算结果和所述第一常数,得到所述第七运算值。
11.根据权利要求1所述的方法,其特征在于,所述动态令牌根据所述第五运算值、所述种子补充值和所述第七运算值,得到第八运算值,具体为: 所述动态令牌根据单向算法和所述第五运算值对所述种子补充值进行运算,得到第六扩散值;根据所述第六扩散值和所述第五运算值,得到第六运算值;根据所述单向算法和所述第七运算值对所述第六运算值进行运算,得到第八扩散值;根据所述第八扩散值和所述第七运算值,得到第八运算值。
12.根据权利要求1所述的方法,其特征在于,所述步骤S7,具体包括: 步骤S7-1:所述动态令牌根据所述第八运算值得到字节位置标识; 步骤S7-2:所述动态令牌从所述第八运算值中与所述字节位置标识对应的位置开始,获取4个字节的数据作为第一应答数据; 步骤S7-3:所述动态令牌将所述第一应答数据转换为10进制整数,得到第二应答数据; 步骤S7-4:所述动态令牌根据所述激活码的长度,从所述第二应答数据中获取第二应答码。
13.根据权利要求12所述的方法,其特征在于,所述动态令牌根据第八运算值得到字节位置标识,具体为:所述动态令牌获取所述第八运算值的最后一个字节的低四位数据作为所述字节位置标识。
14.根据权利要求12所述的方法,其特征在于,所述动态令牌根据所述激活码的长度,从所述第二应答数据中获取第二应答码,具体为: 所述动态令牌将所述激活码的长度的一半作为所述第二应答码的长度,根据所述第二应答码的长度从所述第二应答数据的最低位开始获取所述第二应答码。
15.一种激活动态令牌的装置,其特征在于,包括:接收模块、第一计算模块、第二计算模块、第一生成模块、第三计算模块、第四计算模块、第二生成模块、第一判断模块、显示模块和第一更新模块; 所述接收模块,用于通过按键接收激活码,所述激活码包括激活挑战码和激活应答码; 所述第一计算模块,用于对预设的第一种子进行第一单向运算,得到第一运算值;对所述接收模块接收到的所述激活挑战码进行转换,得到第二转换值;对所述第一种子进行第二单向运算,得到第三运算值; 所述第二计算模块,用于根据所述第一计算模块计算得到的所述第一运算值、所述第二转换值和所述第三运算值,得到第四扩散值; 所述第一生成模块,用于根据所述第二计算模块计算得到的所述第四扩散值和所述第一计算模块计算得到的所述第三运算值,生成第二种子,所述第二种子包括第一数据和第二数据; 所述第三计算模块,用于对所述第一生成模块生成的第一数据进行第一单向运算,得到第五运算值;对所述第一生成模块生成的第二数据进行补充,得到种子补充值;对所述第一生成模块生成的第一数据进行第二单向运算,得到第七运算值; 所述第四计算模块,用于根据所述第三计算模块计算得到的所述第五运算值、所述种子补充值和所述第七运算值,得到第八运算值; 所述第二生成模块,用于根据所述第四计算模块计算得到的所述第八运算值,生成第二应答码; 所述第一判断模块,用于判断所述第二生成模块生成的所述第二应答码和所述接收模块接收到的所述激活应答码是否一致; 所述显示模块,用于在所述第一判断模块判断所述第二应答码和所述激活应答码不一致时,显示错误信息; 所述第一更新模块,用于在所述第一判断模块判断所述第二应答码和所述激活应答码一致时,根据所述第一生成模块生成的所述第二种子更新所述第一种子。
16.根据权利要求15所述的装置,其特征在于,包括第二判断模块,用于判断所述接收模块接收到的所述激活码的长度是否为第一预设长度; 所述第一计算模块,还用于在所述第二判断模块判断为是时,进行工作; 所述显示模块,还用于在所述第二判断模块判断为否时,显示错误信息。
17.根据权利要求15所述的装置,其特征在于,所述第一计算模块包括:第一异或单元和第一运算单元; 所述第一异或单元,用于对所述第一种子和第一预设值进行异或运算,得到第一异或值; 所述第一运算单元,用于根据单向算法和第一常数对所述第一异或单元得到的所述第一异或值进行运算,再根据运算结果和所述第一常数,得到所述第一运算值。
18.根据权利要求17所述的装置,其特征在于,所述第一计算模块还包括:第一转换单元和第一补充单元; 所述第一转换单元,用于将所述接收模块接收到的所述激活挑战码转换为16进制整数,得到第一转换值; 所述第一补充单元,用于对所述第一转换单元得到的所述第一转换值进行补充,得到所述第二转换值。
19.根据权利要求18所述的装置,其特征在于,所述第一补充单元具体用于在所述第一转换值后面填充第二预设值,根据所述第一异或值的长度和所述第一转换值的长度得到第一长度,将所述第一长度填充在所述第二预设值之后,并在所述第二预设值和所述第一长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述第二转换值。
20.根据权利要求17所述的装置,其特征在于,所述第一异或单元,还用于对所述第一种子和第三预设值进行异或运算,得到第二异或值; 所述第一运算单元,还用于根据单向算法和第一常数对所述第一异或单元得到的所述第二异或值进行运算,再根据运算结果和所述第一常数,得到所述第三运算值。
21.根据权利要求15所述的装置,其特征在于,所述第二计算模块具体用于:根据单向算法和所述第一运算值对所述第二转换值进行运算,得到第二扩散值;根据所述第二扩散值和所述第一运算值,得到第二运算值;根据所述单向算法和所述第三运算值对所述第二运算值进行运算,得到第四扩散值。
22.根据权利要求15所述的装置,其特征在于,所述第三计算模块包括:第二异或单元和第二运算单元; 所述第二异或单元,用于对所述第一生成模块得到的所述第一数据和第一预设值进行异或运算,得到第三异或值; 所述第二运算单元,用于根据单向算法和第一常数对所述第二异或单元得到的所述第三异或值进行运算,再根据运算结果和所述第一常数,得到所述第五运算值。
23.根据权利要求22所述的装置,其特征在于,所述第三计算模块还包括第二补充单元,用于在所述第二数据后面填充第二预设值,根据所述第三异或值的长度和所述第二数据的长度得到第二长度,将所述第二长度填充在所述第二预设值之后,并在所述第二预设值和所述第二长度之间补0x00,使补充后的数据长度为512位的整数倍,得到所述种子补充值。
24.根据权利要求22所述的装置,其特征在于,所述第二异或单元,还用于对所述第一生成模块得到的所述第一数据和第三预设值进行异或运算,得到第四异或值; 所述第二运算单元,还用于根据单向算法和第一常数对所述第二异或单元得到的所述第四异或值进行运算,再根据运算结果和所述第一常数,得到所述第七运算值。
25.根据权利要求15所述的装置,其特征在于,所述第四计算模块具体用于:根据单向算法和所述第五运算值对所述种子补充值进行运算,得到第六扩散值;根据所述第六扩散值和所述第五运算值,得到第六运算值;根据所述单向算法和所述第七运算值对所述第六运算值进行运算,得到第八扩散值;根据所述第八扩散值和所述第七运算值,得到第八运算值。
26.根据权利要求15所述的装置,其特征在于,所述第二生成模块包括:第一获取单元、第二获取单元、第二转换单元和第三获取单元; 所述第一获取单元,用于根据所述第四计算模块得到的所述第八运算值得到字节位置标识; 所述第二获取单元,用于从所述第四计算模块得到的所述第八运算值中,与所述第一获取单元得到的所述字节位置标识对应的位置开始,获取4个字节的数据作为第一应答数据; 所述第二转换单元,用于将所述第二获取单元获取到的所述第一应答数据转换为10进制整数,得到第二应答数据; 所述第三获取单元,用于根据所述接收模块接收到的所述激活码的长度,从所述第二转换单元得到的所述第二应答数据中获取所述第二应答码。
27.根据权利要求26所述的装置,其特征在于,所述第一获取单元具体用于,获取所述第八运算值的最后一个字节的低四位数据作为所述字节位置标识。
28.根据权利要求26所述的装置,其特征在于,所述第三获取单元,具体用于将所述激活码的长度的一半作为所述第二应答码的长度,根据所述第二应答码的长度从所述第二应答数据的最低位开始获取所述第二应答码。
【文档编号】H04L9/32GK104184590SQ201410441637
【公开日】2014年12月3日 申请日期:2014年9月1日 优先权日:2014年9月1日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1