一种具有日志功能的动态令牌及其工作方法转让专利

申请号 : CN201410685654.2

文献号 : CN104394145B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆舟于华章

申请人 : 飞天诚信科技股份有限公司

摘要 :

本发明公开了一种具有日志功能的动态令牌及其工作方法,动态令牌判断出按键中断标志被置位后,扫描键盘,获取第一键值,并根据第一键值,对当前被按下的按键进行判断,如果当前被按下的按键是第一按键,则生成动态口令以及与该动态口令对应的日志,将动态口令存储到显示数据缓冲区,将日志存储到日志存储区,开启按键中断;如果当前被按下的按键是第二按键,或者是第三按键和第四按键的组合,则从日志存储区中读取日志,并将读取到的日志存储到显示数据缓冲区。通过动态令牌记录与已完成的身份认证相关的信息,用户能够复核已完成的身份认证是否为由自身完成的身份认证,提高了使用动态口令的身份认证机制以及动态令牌的安全性。

权利要求 :

1.一种具有日志功能的动态令牌的工作方法,其特征在于,包括以下步骤:

S1、动态令牌上电,执行初始化操作,开启总中断和按键唤醒功能;

S2、所述动态令牌判断是否存在置位的中断标志,如果是,则执行步骤S3;否则,继续执行步骤S2;

S3、所述动态令牌对置位的中断标志进行判断,如果是定时器中断标志,则执行步骤S4;如果是按键中断标志,则执行步骤S5;

S4、所述动态令牌将所述定时器中断标志复位,并返回步骤S2;

S5、所述动态令牌关闭按键中断,扫描键盘,获取第一键值;

S6、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果当前被按下的按键是第一按键,则执行步骤S7;如果当前被按下的按键是第二按键,或者是第三按键和第四按键的组合,则执行步骤S8;

S7、所述动态令牌生成动态口令以及与所述动态口令对应的日志,将所述动态口令存储到显示数据缓冲区,将所述日志存储到日志存储区,开启按键中断,并返回步骤S2;

S8、所述动态令牌从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并返回步骤S2。

2.如权利要求1所述的方法,其特征在于,所述动态令牌根据所述第一键值,判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,还包括:T1、所述动态令牌开启按键中断,判断是否存在置位的中断标志,如果是,则执行步骤T2;否则,继续执行步骤T1;

T2、所述动态令牌判断出置位的中断标志是按键中断标志后,关闭按键中断,扫描键盘;

T3、所述动态令牌根据扫描得到的键值判断出当前被按下的按键为第五按键后,执行所述步骤S8。

3.如权利要求1或2所述的方法,其特征在于,所述第一按键为确认键;

所述动态令牌根据所述第一键值,对当前被按下的按键进行判断之后,还包括:如果当前被按下的按键是数字键,所述动态令牌判断按键数据长度是否小于第三预设长度,如果是,则将所述第一键值保存到按键数据缓冲区和显示数据缓冲区中,更新所述按键数据长度,开启按键中断,并返回步骤S2;否则,开启按键中断,并返回步骤S2;

如果当前被按下的按键是删除键,所述动态令牌判断按键数据长度是否为零,如果是,则开启按键中断,并返回步骤S2;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,将所述显示数据缓冲区中最后一次存入的数据删除,开启按键中断,并返回步骤S2;

所述步骤S7,具体包括:

所述动态令牌判断所述按键数据长度是否为零;

如果所述按键数据长度为零,所述动态令牌根据时间因子,生成动态口令以及与所述动态口令对应的新增日志,将所述动态口令存储到所述显示数据缓冲区中,将所述新增日志存储到所述日志存储区,开启按键中断,并返回步骤S2;

如果所述按键数据长度不为零,所述动态令牌将所述按键数据缓冲区中的数据作为挑战码,生成动态口令以及与所述动态口令对应的新增日志,将所述动态口令存储到所述显示数据缓冲区中,将所述新增日志存储到所述日志存储区,开启按键中断,并返回步骤S2。

4.如权利要求3所述的方法,其特征在于,所述动态令牌根据时间因子,生成动态口令以及与所述动态口令对应的新增日志,具体为:所述动态令牌根据所述时间因子生成时间型动态口令,为新增日志分配索引,将与所述时间因子对应的时间信息的长度作为所述新增日志的长度,对所述索引、所述新增日志的长度以及与所述时间因子对应的时间信息进行组合,得到所述新增日志。

5.如权利要求3所述的方法,其特征在于,所述动态令牌将所述按键数据缓冲区中的数据作为挑战码,生成动态口令以及与所述动态口令对应的新增日志,具体为:所述动态令牌根据所述时间因子和所述挑战码,生成挑战型动态口令,为新增日志分配索引,对与所述挑战码对应的交易信息进行压缩,得到压缩交易数据,获取与所述时间因子对应的时间信息的长度和所述压缩交易数据的长度之和作为所述新增日志的长度,对所述索引、所述新增日志的长度、与所述时间因子对应的时间信息,以及所述压缩交易数据进行组合,得到所述新增日志。

6.如权利要求3所述的方法,其特征在于,所述动态令牌将所述新增日志存储到所述日志存储区,具体包括:所述动态令牌判断日志条数是否为零,如果是,则将所述新增日志存储到所述日志存储区中,将最前日志索引和最后日志索引均设置为所述新增日志中的索引,更新日志条数;

否则,将所述新增日志存储到所述日志存储区中,将最后日志索引设置为所述新增日志中的索引,更新日志条数。

7.如权利要求6所述的方法,其特征在于,所述步骤S8,具体为:

所述动态令牌将当前日志索引设置为所述最后日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志存储到日志缓冲区中,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并返回步骤S2。

8.如权利要求7所述的方法,其特征在于,所述步骤S8之后,还包括:

Q1、所述动态令牌判断出置位的中断标志是按键中断标志后,关闭按键中断,扫描键盘;

Q2、所述动态令牌根据扫描得到的键值,对当前被按下的按键进行判断,如果是左键,则执行步骤Q3;如果是右键,则执行步骤Q5;

Q3、所述动态令牌判断当前日志索引是否等于所述最前日志索引,如果是,则开启按键中断,并返回步骤S2;否则,执行步骤Q4;

Q4、所述动态令牌更新当前日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并返回步骤S2;

Q5、所述动态令牌判断当前日志索引是否等于所述最后日志索引,如果是,则开启按键中断,并返回步骤S2;否则,更新当前日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并返回步骤S2。

9.如权利要求8所述的方法,其特征在于,所述步骤Q2之前,还包括:

所述动态令牌判断出时间信息显示标志置位;

所述步骤Q2中,所述动态令牌根据扫描得到的键值,判断出当前被按下的按键为确认键之后,还包括:R1、所述动态令牌判断所述日志缓冲区中的日志的长度是否为第五预设长度,如果是,则执行步骤R2;否则,执行步骤R3;

R2、所述动态令牌显示空白交易信息,将所述时间信息显示标志复位,开启按键中断,并返回步骤S2;

R3、所述动态令牌将所述时间信息显示标志复位,从所述日志缓冲区中的日志中获取压缩交易数据,对所述压缩交易数据进行解压,判断解压得到的当前交易信息的长度是否大于第四预设长度,如果是,则执行步骤R4;否则,执行步骤R5;

R4、所述动态令牌从所述当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并返回步骤S2;

R5、所述动态令牌将所述当前交易信息存储到所述显示数据缓冲区中,开启按键中断,并返回步骤S2。

10.如权利要求6所述的方法,其特征在于,所述步骤S8,具体为:

所述动态令牌将当前日志索引设置为所述最后日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,对读取到的日志中的压缩交易数据进行解压,将解压得到的当前交易信息存储到日志缓冲区中,判断当前交易信息是否大于第四预设长度,如果是,则从所述当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并返回步骤S2;否则,将所述当前交易信息存储到所述显示数据缓冲区中,开启按键中断,并返回步骤S2。

11.如权利要求10所述的方法,其特征在于,所述步骤S8之后,还包括:M1、所述动态令牌判断出置位的中断标志是按键中断标志后,关闭按键中断,扫描键盘;

M2、所述动态令牌根据扫描得到的键值,对当前被按下的按键进行判断,如果是左键,则执行步骤M3;如果是右键,则执行步骤M7;

M3、所述动态令牌判断显示屏上的左箭头是否被点亮,如果是,执行步骤M4;否则,开启按键中断,并返回步骤S2;

M4、所述动态令牌从所述当前交易信息中读取与所述当前显示信息相邻,且存储位置更靠前的数据作为未显示数据,判断所述未显示数据的长度是否大于第四预设长度,如果是,则执行步骤M5;否则,执行步骤M6;

M5、所述动态令牌从所述未显示数据中选取存储位置最靠后的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并返回步骤S2;

M6、所述动态令牌将所述未显示数据存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,熄灭显示屏上的左箭头,开启按键中断,并返回步骤S2;

M7、所述动态令牌判断显示屏上的右箭头是否被点亮,如果是,执行步骤M8;否则,开启按键中断,并返回步骤S2;

M8、所述动态令牌从所述当前交易信息中读取与所述当前显示信息相邻,且存储位置更靠后的数据作为未显示数据,判断所述未显示数据的长度是否大于第四预设长度,如果是,则执行步骤M9;否则,执行步骤M10;

M9、所述动态令牌从所述未显示数据中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的左箭头,开启按键中断,并返回步骤S2;

M10、所述动态令牌将所述未显示数据存储到所述显示数据缓冲区中,点亮显示屏上的左箭头,熄灭显示屏上的右箭头,开启按键中断,并返回步骤S2。

12.如权利要求11所述的方法,其特征在于,所述步骤M2之前,还包括:所述动态令牌判断出时间信息显示标志复位;

所述步骤M2中,所述动态令牌根据扫描得到的键值,判断出当前被按下的按键为确认键之后,还包括:所述动态令牌将所述时间信息显示标志置位,从所述日志缓冲区中的日志中读取时间信息,将读取到的时间信息存储到所述显示数据缓冲区中,开启按键中断,并返回步骤S2。

13.如权利要求7至12中任一项所述的方法,其特征在于,所述动态令牌将所述新增日志存储到所述日志存储区,具体包括:P1、所述动态令牌判断日志条数是否为零,如果是,则将所述新增日志存储到所述日志存储区中,将最前日志索引和最后日志索引均设置为所述新增日志中的索引,更新日志条数;否则,执行步骤P2;

P2、所述动态令牌判断所述新增日志占用的空间是否大于所述日志存储区中的剩余空间,如果是,则执行步骤P3;否则,将所述新增日志存储到日志存储区中,更新日志条数和最后日志索引;

P3、所述动态令牌将所述日志存储区中最早一次存入的日志删除,将所述日志存储区中剩余的日志前移,更新日志条数和最前日志索引,并返回步骤P2。

14.如权利要求13所述的方法,其特征在于,所述动态令牌根据当前日志索引从所述日志存储区中读取对应的日志,具体包括:H1、所述动态令牌将读取指针设置为所述日志存储区的首地址;

H2、所述动态令牌根据所述读取指针,从所述日志存储区中读取对应的日志,判断读取到的日志中的索引是否与所述当前日志索引相同,如果是,则确定读取到的日志为与所述当前日志索引对应的日志;否则,执行步骤H3;

H3、所述动态令牌根据读取到的日志占用的空间大小更新所述读取指针,并返回步骤H2。

15.如权利要求7-12中任一项所述的方法,其特征在于,所述动态令牌将所述新增日志存储到所述日志存储区,具体包括:G1、所述动态令牌判断所述新增日志占用的空间是否大于所述日志存储区中的剩余空间,如果是,则执行步骤G2;否则,执行步骤G4;

G2、所述动态令牌根据最前记录指针,从所述日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新所述最前记录指针和所述日志存储区中的剩余空间;

G3、所述动态令牌根据所述最前记录指针,从所述日志存储区中读取对应的日志,将读取到的日志的索引作为最前日志索引,更新日志条数,并返回步骤G1;

G4、所述动态令牌判断日志条数是否为零,如果是,则执行步骤G6;否则,执行步骤G5;

G5、所述动态令牌根据最后记录指针,从所述日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新所述最后记录指针,并执行步骤G6;

G6、所述动态令牌将临时计数器的计数值设置为零,将临时指针的取值设置为最后记录指针的取值,将当前日志字节设置为所述新增日志的首字节;

G7、所述动态令牌判断所述临时指针的取值是否小于所述日志存储区的空间大小,如果是,则执行步骤G8;否则,将所述临时指针的取值置为零,并执行步骤G8;

G8、所述动态令牌将当前日志字节存储到所述临时指针对应的位置,更新所述临时指针和所述临时计数器的计数值,将当前日志字节的下一字节作为更新后的当前日志字节;

G9、所述动态令牌判断所述临时计数器的计数值是否小于所述新增日志占用的空间大小,如果是,则返回步骤G7;否则,执行步骤G10;

G10、所述动态令牌将最后日志索引设置为所述新增日志的索引,更新日志条数,并根据所述新增日志占用的空间大小,更新所述日志存储区中的剩余空间。

16.如权利要求15所述的方法,其特征在于,所述动态令牌根据当前日志索引从所述日志存储区中读取对应的日志,具体包括:K1、所述动态令牌将临时指针的取值设置为最前记录指针的取值;

K2、所述动态令牌根据所述临时指针,从所述日志存储区中读取对应的索引,获取与所述索引对应的日志所占用的空间大小,判断所述索引是否与所述当前日志索引相同,如果是,则执行步骤K4;否则,执行步骤K3;

K3、所述动态令牌根据所述日志所占用的空间大小更新所述临时指针,判断所述临时指针的取值是否小于所述日志存储区的空间大小,如果是,则返回步骤K2;否则,根据所述日志存储区的空间大小更新所述临时指针,并返回步骤K2;

K4、所述动态令牌将临时计数器的计数值设置为所述日志所占用的空间大小;

K5、所述动态令牌根据所述临时指针,从所述日志存储区中读取一个字节的数据,并更新所述临时指针和所述临时计数器的计数值;

K6、所述动态令牌判断所述临时指针的取值是否小于所述日志存储区的空间大小,如果是,则执行步骤K7;否则,根据所述日志存储区的空间大小更新所述临时指针,并执行步骤K7;

K7、所述动态令牌判断所述临时计数器的计数值是否大于零,如果是,则返回步骤K5;

否则,确定从所述日志存储区中读取与所述当前日志索引对应的日志完毕。

17.如权利要求1所述的方法,其特征在于,所述动态令牌获取第一键值之后,还包括:所述动态令牌获取按键时长;

所述动态令牌根据所述第一键值,判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,还包括:所述动态令牌判断所述按键时长是否小于第一预设时长,如果是,则根据当前被按下的按键执行相应的操作,开启按键中断,并返回步骤S2;否则,执行步骤S8。

18.如权利要求17所述的方法,其特征在于,所述第一预设时长为第一预设值和第二预设值之间的差值与第三预设时长的乘积;

所述动态令牌判断出所述置位的中断标志为按键中断标志之后,还包括:

所述动态令牌将长按键标志复位;

所述动态令牌获取按键时长,具体包括:

S9、所述动态令牌延时第二预设时长,保存所述第一键值,扫描键盘,获取第二键值;

S10、所述动态令牌判断所述第二键值是否与所述第一键值相同,如果是,则执行步骤S11;否则,开启按键中断,并返回步骤S2;

S11、所述动态令牌将定时器的溢出时间设置为第三预设时长,将溢出次数设置为第一预设值;

S12、所述动态令牌开启总中断和所述定时器的计时功能,将时钟源切换至低速时钟,进入休眠模式;

S13、所述动态令牌被唤醒后,关闭所述定时器的计时功能,将时钟源切换至高速时钟;

S14、所述动态令牌判断所述定时器中断标志是否被置位,如果是,则执行步骤S15;否则,返回步骤S12;

S15、所述动态令牌判断关闭总中断,将所述定时器中断标志复位;

S16、所述动态令牌扫描键盘,获取第三键值,判断所述第三键值是否与所述第一键值相同,如果是,则执行步骤S17;否则,开启按键中断和总中断,并返回步骤S2;

S17、所述动态令牌对所述溢出次数进行更新,判断所述溢出次数是否为第二预设值,如果是,则将所述长按键标志置位;否则,返回步骤S12;

所述动态令牌判断所述按键时长是否小于第一预设时长,具体为:

所述动态令牌判断所述长按键标志是否置位,如果是,则确定所述按键时长不小于第一预设时长;否则,确定所述按键时长小于第一预设时长。

19.如权利要求1所述的方法,其特征在于,所述动态令牌根据所述第一键值,对当前被按下的按键进行判断之后,还包括:如果当前被按下的按键是电源键,且系统状态不是关机状态时,执行步骤A1;如果当前被按下的按键是电源键,且系统状态是关机状态时,执行步骤A2:A1、所述动态令牌将所述系统状态设置为关机状态,开启按键中断,并返回步骤S2;

A2、所述动态令牌更新所述系统状态;

所述步骤S8之前,还包括:

所述动态令牌判断出所述系统状态为关机状态,并执行以下步骤:

A3、所述动态令牌更新所述系统状态。

20.如权利要求19所述的方法,其特征在于,所述步骤A2,具体为:

所述动态令牌将所述系统状态设置为验证令牌PIN状态;

所述动态令牌判断出所述系统状态为验证令牌PIN状态,且根据所述第一键值,对当前被按下的按键进行判断之后,还包括:B1、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤B2;如果是删除键,则执行步骤B10;

B2、所述动态令牌将所述第一键值保存到按键数据缓冲区中,更新按键数据长度;

B3、所述动态令牌判断所述按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并返回步骤S2;否则,执行步骤B4;

B4、所述动态令牌判断所述按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤B5;否则,执行步骤B6;

B5、所述动态令牌清空按键数据缓冲区,将令牌验证错误次数清零,将所述系统状态设置为令牌界面状态,开启按键中断,并返回步骤S2;

B6、所述动态令牌清空按键数据缓冲区,对令牌验证错误次数进行更新;

B7、所述动态令牌判断令牌验证错误次数是否为第一预设次数,如果是,则执行步骤B8;否则,执行步骤B9;

B8、所述动态令牌将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并返回步骤S2;

B9、所述动态令牌将所述系统状态设置为PIN错误状态,开启按键中断,并返回步骤S2;

B10、所述动态令牌判断所述按键数据长度是否为零,如果是,则开启按键中断,并返回步骤S2;否则,执行步骤B11;

B11、所述动态令牌将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并返回步骤S2。

21.如权利要求20所述的方法,其特征在于,所述步骤A3,具体为:

所述动态令牌将所述系统状态设置为验证日志PIN状态;

所述动态令牌判断出所述系统状态为验证日志PIN状态,且根据所述第一键值,对当前被按下的按键进行判断之后,还包括:C1、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤C2;如果是删除键,则执行步骤C10;

C2、所述动态令牌将所述第一键值保存到按键数据缓冲区中,更新所述按键数据长度;

C3、所述动态令牌判断所述按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并返回步骤S2;否则,执行步骤C4;

C4、所述动态令牌判断所述按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤C5;否则,执行步骤C6;

C5、所述动态令牌清空按键数据缓冲区,将日志验证错误次数清零,将所述系统状态设置为日志显示状态,开启按键中断,并返回步骤S2;

C6、所述动态令牌清空按键数据缓冲区,对日志验证错误次数进行更新;

C7、所述动态令牌判断日志验证错误次数是否为第二预设次数,如果是,则执行步骤C8;否则,执行步骤C9;

C8、所述动态令牌将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并返回步骤S2;

C9、所述动态令牌将所述系统状态设置为PIN错误状态,开启按键中断,并返回步骤S2;

C10、所述动态令牌判断所述按键数据长度是否为零,如果是,则开启按键中断,并返回步骤S2;否则,执行步骤C11;

C11、所述动态令牌将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并返回步骤S2。

22.如权利要求21所述的方法,其特征在于,所述动态令牌判断出当前被按下的按键是电源键,且所述系统状态不是关机状态之后,还包括:所述动态令牌将日志开机标志复位;

所述步骤S8之前,还包括:

所述动态令牌将所述日志开机标志置位;

所述动态令牌判断出当前被按下的按键不是电源键,且所述系统状态为PIN错误状态之后,还包括:所述动态令牌判断所述日志开机标志是否置位,如果是,则将所述系统状态设置为验证日志PIN状态,开启按键中断,并返回步骤S2;否则,将所述系统状态设置为验证令牌PIN状态,开启按键中断,并返回步骤S2。

23.如权利要求21所述的方法,其特征在于,所述步骤A2之前,还包括:所述动态令牌判断令牌锁定标志是否置位,如果是,则将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并返回步骤S2;否则,执行步骤A2;

所述步骤A3之前,还包括:

所述动态令牌判断日志锁定标志是否置位,如果是,则将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并返回步骤S2;否则,执行步骤A3;

所述动态令牌判断出所述令牌验证错误次数为第一预设次数之后,还包括:

所述动态令牌将所述令牌锁定标志置位;

所述动态令牌判断出所述日志验证错误次数为第二预设次数之后,还包括:

所述动态令牌将所述令牌锁定标志置位;

所述动态令牌判断出当前被按下的按键不是电源键,且所述系统状态为显示解锁挑战码状态之后,还包括:所述动态令牌生成解锁挑战码,将所述系统状态设置为等待输入解锁码状态,显示所述解锁挑战码,开启按键中断,并返回步骤S2;

所述动态令牌判断出所述系统状态为等待输入解锁码状态,且根据所述第一键值,对当前被按下的按键进行判断之后,还包括:D1、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤D2;如果是删除键,则执行步骤D6;

D2、所述动态令牌将所述第一键值保存到按键数据缓冲区中,更新按键数据长度,判断所述按键数据长度是否小于第二预设长度,如果是,则开启按键中断,并返回步骤S2;否则,执行步骤D3;

D3、所述动态令牌根据所述解锁挑战码,对所述按键数据缓冲区中的数据进行验证,如果验证通过,则执行步骤D4;否则,执行步骤D5;

D4、所述动态令牌清空所述按键数据缓冲区,将令牌锁定标志和日志锁定标志复位,将所述系统状态设置为第一设置PIN状态,开启按键中断,并返回步骤S2;

D5、所述动态令牌清空所述按键数据缓冲区,将所述系统状态设置为关机状态,开启按键中断,并返回步骤S2;

D6、所述动态令牌判断按键数据长度是否为零,如果是,则开启按键中断,并返回步骤S2;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并返回步骤S2。

24.如权利要求23所述的方法,其特征在于,所述步骤A2之前,还包括:所述动态令牌判断密码设置标志是否置位,如果是,则执行步骤A2;否则,将所述系统状态设置为第一设置PIN状态,开启按键中断,并返回步骤S2;

所述动态令牌判断出所述系统状态为第一设置PIN状态,且根据所述第一键值,对当前被按下的按键进行判断之后,还包括:E1、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤E2;如果是删除键,则执行步骤E4;

E2、所述动态令牌将所述第一键值保存到所述按键数据缓冲区中,更新所述按键数据长度,判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并返回步骤S2;

否则,执行步骤E3;

E3、所述动态令牌将所述按键数据缓冲区中的数据存储到密码数据缓冲区中,清空所述按键数据缓冲区,将所述系统状态设置为第二设置PIN状态,开启按键中断,并返回步骤S2;

E4、所述动态令牌判断所述按键数据长度是否为零,如果是,则开启按键中断,并返回步骤S2;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并返回步骤S2;

所述动态令牌判断出所述系统状态为第二设置PIN状态,且根据所述第一键值,对当前被按下的按键进行判断之后,还包括:F1、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤F2;如果是删除键,则执行步骤F8;

F2、所述动态令牌将所述第一键值保存到所述按键数据缓冲区中,更新所述按键数据长度,判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并返回步骤S2;

否则,执行步骤F3;

F3、所述动态令牌判断所述按键数据缓冲区中的数据是否与所述密码数据缓冲区中的数据相同,如果是,则执行步骤F5;否则,执行步骤F4;

F4、所述动态令牌清空按键数据缓冲区和密码数据缓冲区,将所述系统状态设置为PIN设置错误状态,开启按键中断,并返回步骤S2;

F5、所述动态令牌判断日志开机标志是否置位,如果是,则执行步骤F6;否则,执行步骤F7;

F6、所述动态令牌将所述密码设置标志置位,清空所述按键数据缓冲区,将所述系统状态设置为日志显示状态,开启按键中断,并返回步骤S2;

F7、所述动态令牌将所述密码设置标志置位,清空所述按键数据缓冲区,将所述系统状态设置为令牌界面状态,开启按键中断,并返回步骤S2;

F8、所述动态令牌判断所述按键数据长度是否为零,如果是,则开启按键中断,并返回步骤S2;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并返回步骤S2;

所述动态令牌判断出当前被按下的按键不是电源键,且所述系统状态为PIN设置错误状态之后,还包括:所述动态令牌将所述系统状态设置为第一设置PIN状态,开启按键中断,并返回步骤S2;

所述步骤S7之前,还包括:

所述动态令牌判断出所述系统状态为令牌界面状态;

所述步骤S8之前,还包括:

所述动态令牌判断出所述系统状态为日志显示状态。

25.一种具有日志功能的动态令牌,其特征在于,包括:

初始化模块,用于在上电之后,执行初始化操作,开启总中断和按键唤醒功能;

第一判断模块,用于判断是否存在置位的中断标志;

第二判断模块,用于在所述第一判断模块判断出存在置位的中断标志之后,对置位的中断标志进行判断;

复位模块,用于在所述第二判断模块判断出所述置位的中断标志是定时器中断标志时,将定时器中断标志复位,并触发所述第一判断模块判断是否存在置位的中断标志;

第一获取模块,用于在所述第二判断模块判断出所述置位的中断标志是按键中断标志时,关闭按键中断,扫描键盘,获取第一键值;

第三判断模块,用于根据所述第一获取模块获取到的所述第一键值,对当前被按下的按键进行判断;

第一处理模块,用于在所述第三判断模块判断出当前被按下的按键是第一按键时,生成动态口令以及与所述动态口令对应的日志,将所述动态口令存储到显示数据缓冲区,将所述日志存储到日志存储区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第二处理模块,用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

26.如权利要求25所述的动态令牌,其特征在于,

所述第二处理模块,具体用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,执行以下操作:T1、开启按键中断,判断是否存在置位的中断标志,如果是,则执行步骤T2;否则,继续执行步骤T1;

T2、判断出置位的中断标志是按键中断标志后,关闭按键中断,扫描键盘;

T3、根据扫描得到的键值判断出当前被按下的按键为第五按键后,从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

27.如权利要求25或26所述的动态令牌,其特征在于,所述第一按键为确认键;

所述动态令牌,还包括:

第三处理模块,用于在所述第三判断模块判断出当前被按下的按键是数字键时,判断按键数据长度是否小于第三预设长度,如果是,则将所述第一键值保存到按键数据缓冲区和显示数据缓冲区中,更新所述按键数据长度,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

在所述第三判断模块判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,将所述显示数据缓冲区中最后一次存入的数据删除,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述第一处理模块,包括:

第一判断子模块,用于在所述第三判断模块判断出当前被按下的按键是确认键时,判断所述按键数据长度是否为零;

第一生成子模块,用于在所述第一判断子模块判断出所述按键数据长度为零时,根据时间因子,生成动态口令以及与所述动态口令对应的新增日志;

第二生成子模块,用于在所述第一判断子模块判断出所述按键数据长度不为零时,将所述按键数据缓冲区中的数据作为挑战码,生成动态口令以及与所述动态口令对应的新增日志;

第一存储子模块,用于将所述第一生成子模块和第二生成子模块生成的动态口令存储到所述显示数据缓冲区中;

第二存储子模块,用于将所述第一生成子模块和第二生成子模块生成的新增日志存储到所述日志存储区;

开启子模块,用于在所述第一生成子模块或第二生成子模块生成动态口令和新增日志后,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

28.如权利要求27所述的动态令牌,其特征在于,

所述第一生成子模块,具体用于在所述第一判断子模块判断出所述按键数据长度为零时,根据所述时间因子生成时间型动态口令,为新增日志分配索引,将与所述时间因子对应的时间信息的长度作为新增日志的长度,对所述索引、所述新增日志的长度以及与所述时间因子对应的时间信息进行组合,得到所述新增日志。

29.如权利要求27所述的动态令牌,其特征在于,

所述第二生成子模块,具体用于在所述第一判断子模块判断出所述按键数据长度不为零时,根据所述时间因子和所述挑战码,生成挑战型动态口令,为新增日志分配索引,对与所述挑战码对应的交易信息进行压缩,得到压缩交易数据,获取与所述时间因子对应的时间信息的长度和所述压缩交易数据的长度之和作为所述新增日志的长度,对所述索引、所述新增日志的长度、与所述时间因子对应的时间信息,以及所述压缩交易数据进行组合,得到所述新增日志。

30.如权利要求27所述的动态令牌,其特征在于,

所述第二存储子模块,具体用于判断日志条数是否为零,如果是,则将所述新增日志存储到所述日志存储区中,将最前日志索引和最后日志索引均设置为所述新增日志中的索引,更新日志条数;否则,将所述新增日志存储到所述日志存储区中,将最后日志索引设置为所述新增日志中的索引,更新日志条数。

31.如权利要求30所述的动态令牌,其特征在于,

所述第二处理模块,具体用于将当前日志索引设置为所述最后日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志存储到日志缓冲区中,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

32.如权利要求31所述的动态令牌,其特征在于,还包括:

第四处理模块,用于在所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是左键时,判断当前日志索引是否等于所述最前日志索引,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第五处理模块,用于在所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是右键时,判断当前日志索引是否等于所述最后日志索引,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

33.如权利要求32所述的动态令牌,其特征在于,还包括:

第四判断模块,用于判断时间信息显示标志是否置位;

所述第四处理模块,具体用于在所述第四判断模块判断出时间信息显示标志置位、所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是左键时,判断当前日志索引是否等于所述最前日志索引,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述第五处理模块,具体用于在所述第四判断模块判断出时间信息显示标志置位、所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是右键时,判断当前日志索引是否等于所述最后日志索引,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述动态令牌,还包括:

第六处理模块,具体用于在在所述第四判断模块判断出时间信息显示标志置位、所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是确认键时,执行以下操作:R1、判断所述日志缓冲区中的日志的长度是否为第五预设长度,如果是,则执行步骤R2;否则,执行步骤R3;

R2、显示空白交易信息,将所述时间信息显示标志复位,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

R3、将所述时间信息显示标志复位,从所述日志缓冲区中的日志中获取压缩交易数据,对所述压缩交易数据进行解压,判断解压得到的当前交易信息的长度是否大于第四预设长度,如果是,则执行步骤R4;否则,执行步骤R5;

R4、从所述当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

R5、将所述当前交易信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

34.如权利要求30所述的动态令牌,其特征在于,

所述第二处理模块,具体用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,将当前日志索引设置为所述最后日志索引,根据当前日志索引从所述日志存储区中读取对应的日志,对读取到的日志中的压缩交易数据进行解压,将解压得到的当前交易信息存储到日志缓冲区中,判断当前交易信息是否大于第四预设长度,如果是,则从所述当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述当前交易信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

35.如权利要求34所述的动态令牌,其特征在于,还包括:

第七处理模块,用于在所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是左键时,判断显示屏上的左箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;如果被点亮,则从所述当前交易信息中读取与所述当前显示信息相邻,且存储位置更靠前的数据作为未显示数据,判断所述未显示数据的长度是否大于第四预设长度,如果是,则从所述未显示数据中选取存储位置最靠后的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述未显示数据存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,熄灭显示屏上的左箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第八处理模块,用于在所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是右键时,判断显示屏上的右箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;如果被点亮,则从所述当前交易信息中读取与所述当前显示信息相邻,且存储位置更靠后的数据作为未显示数据,判断所述未显示数据的长度是否大于第四预设长度,如果是,则从所述未显示数据中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的左箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述未显示数据存储到所述显示数据缓冲区中,点亮显示屏上的左箭头,熄灭显示屏上的右箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

36.如权利要求35所述的动态令牌,其特征在于,还包括:

第五判断模块,用于判断时间信息显示标志是否置位;

第七处理模块,具体用于在所述第五判断模块判断出时间信息显示标志复位、所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是左键时,判断显示屏上的左箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;如果被点亮,则从所述当前交易信息中读取与所述当前显示信息相邻,且存储位置更靠前的数据作为未显示数据,判断所述未显示数据的长度是否大于第四预设长度,如果是,则从所述未显示数据中选取存储位置最靠后的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述未显示数据存储到所述显示数据缓冲区中,点亮显示屏上的右箭头,熄灭显示屏上的左箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述第八处理模块,具体用于在所述第五判断模块判断出时间信息显示标志复位、所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是右键时,判断显示屏上的右箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;如果被点亮,则从所述当前交易信息中读取与所述当前显示信息相邻,且存储位置更靠后的数据作为未显示数据,判断所述未显示数据的长度是否大于第四预设长度,如果是,则从所述未显示数据中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将所述当前显示信息存储到所述显示数据缓冲区中,点亮显示屏上的左箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述未显示数据存储到所述显示数据缓冲区中,点亮显示屏上的左箭头,熄灭显示屏上的右箭头,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述动态令牌,还包括:

第九处理模块,具体用于在在所述第四判断模块判断出时间信息显示标志复位、所述第二处理模块触发所述第一判断模块判断出存在置位的中断标志,且所述第三判断模块判断出当前被按下的按键是确认键时,将所述时间信息显示标志置位,从所述日志缓冲区中的日志中读取时间信息,将读取到的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

37.如权利要求31至36中任一项所述的动态令牌,其特征在于,

所述第二存储子模块,具体用于执行以下操作:

P1、判断日志条数是否为零,如果是,则将所述新增日志存储到所述日志存储区中,将最前日志索引和最后日志索引均设置为所述新增日志中的索引,更新日志条数;否则,执行步骤P2;

P2、判断所述新增日志占用的空间是否大于所述日志存储区中的剩余空间,如果是,则执行步骤P3;否则,将所述新增日志存储到日志存储区中,更新日志条数和最后日志索引;

P3、将所述日志存储区中最早一次存入的日志删除,将所述日志存储区中剩余的日志前移,更新日志条数和最前日志索引,并返回步骤P2。

38.如权利要求37所述的动态令牌,其特征在于,所述第二处理模块,具体用于执行以下操作:H1、将当前日志索引设置为所述最后日志索引,将读取指针设置为所述日志存储区的首地址;

H2、根据所述读取指针,从所述日志存储区中读取对应的日志,判断读取到的日志中的索引是否与所述当前日志索引相同,如果是,则将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,执行步骤H3;

H3、根据读取到的日志占用的空间大小更新所述读取指针,并返回步骤H2。

39.如权利要求31至36中任一项所述的动态令牌,其特征在于,

所述第二存储子模块,具体用于执行以下操作:

G1、判断所述新增日志占用的空间是否大于所述日志存储区中的剩余空间,如果是,则执行步骤G2;否则,执行步骤G4;

G2、根据最前记录指针,从所述日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新所述最前记录指针和所述日志存储区中的剩余空间;

G3、根据所述最前记录指针,从所述日志存储区中读取对应的日志,将读取到的日志的索引作为最前日志索引,更新日志条数,并返回步骤G1;

G4、判断日志条数是否为零,如果是,则执行步骤G6;否则,执行步骤G5;

G5、根据最后记录指针,从所述日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新所述最后记录指针,并执行步骤G6;

G6、将临时计数器的计数值设置为零,将临时指针的取值设置为最后记录指针的取值,将当前日志字节设置为所述新增日志的首字节;

G7、判断所述临时指针的取值是否小于所述日志存储区的空间大小,如果是,则执行步骤G8;否则,将所述临时指针的取值置为零,并执行步骤G8;

G8、将当前日志字节存储到所述临时指针对应的位置,更新所述临时指针和所述临时计数器的计数值,将当前日志字节的下一字节作为更新后的当前日志字节;

G9、判断所述临时计数器的计数值是否小于所述新增日志占用的空间大小,如果是,则返回步骤G7;否则,执行步骤G10;

G10、将最后日志索引设置为所述新增日志的索引,更新日志条数,并根据所述新增日志占用的空间大小,更新所述日志存储区中的剩余空间。

40.如权利要求39所述的动态令牌,其特征在于,所述第二处理模块根据当前日志索引从所述日志存储区中读取对应的日志,具体为:K1、将当前日志索引设置为所述最后日志索引,将临时指针的取值设置为最前记录指针的取值;

K2、根据所述临时指针,从所述日志存储区中读取对应的索引,获取与所述索引对应的日志所占用的空间大小,判断所述索引是否与所述当前日志索引相同,如果是,则执行步骤K4;否则,执行步骤K3;

K3、根据所述日志所占用的空间大小更新所述临时指针,判断所述临时指针的取值是否小于所述日志存储区的空间大小,如果是,则返回步骤K2;否则,根据所述日志存储区的空间大小更新所述临时指针,并返回步骤K2;

K4、将临时计数器的计数值设置为所述日志所占用的空间大小;

K5、根据所述临时指针,从所述日志存储区中读取一个字节的数据,并更新所述临时指针和所述临时计数器的计数值;

K6、判断所述临时指针的取值是否小于所述日志存储区的空间大小,如果是,则执行步骤K7;否则,根据所述日志存储区的空间大小更新所述临时指针,并执行步骤K7;

K7、判断所述临时计数器的计数值是否大于零,如果是,则返回步骤K5;否则,将读取到的数据存储到日志缓冲区中,将读取到的日志中的时间信息存储到所述显示数据缓冲区中,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

41.如权利要求25所述的动态令牌,其特征在于,还包括:

第二获取模块,用于在所述第一获取模块获取到所述第一键值之后,获取按键时长;

第六判断模块,用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,判断所述第二获取模块获取到的所述按键时长是否小于第一预设时长;

第十处理模块,用于在所述第六判断模块判断出所述按键时长小于第一预设时长时,根据当前被按下的按键执行相应的操作,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述第二处理模块,具体用于在所述第六判断模块判断出所述按键时长不小于第一预设时长时,从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

42.如权利要求41所述的动态令牌,其特征在于,所述第一预设时长为第一预设值和第二预设值之间的差值与第三预设时长的乘积;

所述复位模块,还用于在所述第二判断模块判断出所述置位的中断标志为按键中断标志时,将长按键标志复位;

所述第二获取模块,具体用于在所述第一获取模块获取到所述第一键值之后,执行以下操作:S9、延时第二预设时长,保存所述第一键值,扫描键盘,获取第二键值;

S10、判断所述第二键值是否与所述第一键值相同,如果是,则执行步骤S11;否则,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

S11、将定时器的溢出时间设置为第三预设时长,将溢出次数设置为第一预设值;

S12、开启总中断和所述定时器的计时功能,将时钟源切换至低速时钟,进入休眠模式;

S13、被唤醒后,关闭所述定时器的计时功能,将时钟源切换至高速时钟;

S14、判断所述定时器中断标志是否被置位,如果是,则执行步骤S15;否则,返回步骤S12;

S15、判断关闭总中断,将所述定时器中断标志复位;

S16、扫描键盘,获取第三键值,判断所述第三键值是否与所述第一键值相同,如果是,则执行步骤S17;否则,开启按键中断和总中断,并触发所述第一判断模块判断是否存在置位的中断标志;

S17、对所述溢出次数进行更新,判断所述溢出次数是否为第二预设值,如果是,则将所述长按键标志置位;否则,返回步骤S12;

所述第六判断模块,具体用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合后,判断所述长按键标志是否置位,如果是,则确定所述按键时长不小于第一预设时长;否则,确定所述按键时长小于第一预设时长。

43.如权利要求25所述的动态令牌,其特征在于,还包括:

第七判断模块,用于对系统状态进行判断;

第十一处理模块,用于在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态不是关机状态时,将所述系统状态设置为关机状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态是关机状态时,更新所述系统状态;

所述第二处理模块,包括:

更新子模块,用于在所述第七判断模块判断出所述系统状态为关机状态,且所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,更新所述系统状态;

处理子模块,用于在所述第七判断模块判断出所述系统状态为关机状态,且所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

44.如权利要求43所述的动态令牌,其特征在于,所述第十一处理模块更新所述系统状态,具体为:所述第十一处理模块将所述系统状态设置为验证令牌PIN状态;

所述动态令牌,还包括:

第十二处理模块,用于在所述第七判断模块判断出所述系统状态为验证令牌PIN状态,且所述第三判断模块判断出当前被按下的按键是数字键时,执行以下操作:B2、将所述第一键值保存到按键数据缓冲区中,更新按键数据长度;

B3、判断所述按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,执行步骤B4;

B4、判断所述按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤B5;否则,执行步骤B6;

B5、清空按键数据缓冲区,将令牌验证错误次数清零,将所述系统状态设置为令牌界面状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

B6、清空按键数据缓冲区,对令牌验证错误次数进行更新;

B7、判断令牌验证错误次数是否为第一预设次数,如果是,则执行步骤B8;否则,执行步骤B9;

B8、将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

B9、将所述系统状态设置为PIN错误状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第十三处理模块,用于在所述第七判断模块判断出所述系统状态为验证令牌PIN状态,且所述第三判断模块判断出当前被按下的按键是删除键时,判断所述按键数据长度是否为零,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

45.如权利要求44所述的动态令牌,其特征在于,

所述更新子模块,具体用于在所述第七判断模块判断出所述系统状态为关机状态,且所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,将所述系统状态设置为验证日志PIN状态;

所述动态令牌,还包括:

第十四处理模块,用于在所述第七判断模块判断出所述系统状态为验证日志PIN状态,且所述第三判断模块判断出当前被按下的按键是数字键时,执行以下操作:C2、将所述第一键值保存到按键数据缓冲区中,更新所述按键数据长度;

C3、判断所述按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,执行步骤C4;

C4、判断所述按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤C5;否则,执行步骤C6;

C5、清空按键数据缓冲区,将日志验证错误次数清零,将所述系统状态设置为日志显示状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

C6、清空按键数据缓冲区,对日志验证错误次数进行更新;

C7、判断日志验证错误次数是否为第二预设次数,如果是,则执行步骤C8;否则,执行步骤C9;

C8、将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

C9、将所述系统状态设置为PIN错误状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第十五处理模块,用于在所述第七判断模块判断出所述系统状态为验证日志PIN状态,且所述第三判断模块判断出当前被按下的按键是删除键时,判断所述按键数据长度是否为零,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

46.如权利要求45所述的动态令牌,其特征在于,还包括:

标志位管理模块,用于在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态不是关机状态时,将日志开机标志复位;在所述第七判断模块判断出所述系统状态为关机状态,且所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,将所述日志开机标志置位;

第十六处理模块,用于在所述第三判断模块判断出当前被按下的按键不是电源键,且所述第七判断模块判断出所述系统状态为PIN错误状态时,判断所述日志开机标志是否置位,如果是,则将所述系统状态设置为验证日志PIN状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述系统状态设置为验证令牌PIN状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

47.如权利要求45所述的动态令牌,其特征在于,

所述第十一处理模块,具体用于在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态不是关机状态时,将所述系统状态设置为关机状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态是关机状态时,判断令牌锁定标志是否置位,如果是,则将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述系统状态设置为验证令牌PIN状态;

所述更新子模块,具体用于在所述第七判断模块判断出所述系统状态为关机状态,且所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,判断日志锁定标志是否置位,如果是,则将所述系统状态设置为显示解锁挑战码状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述系统状态设置为验证日志PIN状态;

所述第十二处理模块,还用于在判断出所述令牌验证错误次数为第一预设次数之后,将所述令牌锁定标志置位;

所述第十四处理模块,还用于在判断出所述日志验证错误次数为第二预设次数之后,将所述令牌锁定标志置位;

所述动态令牌,还包括:

第十七处理模块,用于在所述第七判断模块判断出所述系统状态为显示解锁挑战码状态,且所述第三判断模块判断出当前被按下的按键不是电源键时,生成解锁挑战码,将所述系统状态设置为等待输入解锁码状态,显示所述解锁挑战码,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第十八处理模块,用于在所述第七判断模块判断出所述系统状态为等待输入解锁码状态,且所述第三判断模块判断出当前被按下的按键是数字键时,执行以下操作:D2、将所述第一键值保存到按键数据缓冲区中,更新按键数据长度,判断所述按键数据长度是否小于第二预设长度,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,执行步骤D3;

D3、根据所述解锁挑战码,对所述按键数据缓冲区中的数据进行验证,如果验证通过,则执行步骤D4;否则,执行步骤D5;

D4、清空所述按键数据缓冲区,将令牌锁定标志和日志锁定标志复位,将所述系统状态设置为第一设置PIN状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

D5、清空所述按键数据缓冲区,将所述系统状态设置为关机状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第十九处理模块,用于在所述第七判断模块判断出所述系统状态为等待输入解锁码状态,且所述第三判断模块判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

48.如权利要求47所述的动态令牌,其特征在于,

所述第十一处理模块,具体用于在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态不是关机状态时,将所述系统状态设置为关机状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

在所述第三判断模块判断出当前被按下的按键是电源键,且所述第七判断模块判断出所述系统状态是关机状态时,判断密码设置标志是否置位,如果是,则将所述系统状态设置为验证令牌PIN状态;否则,将所述系统状态设置为第一设置PIN状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述动态令牌,还包括:

第二十处理模块,用于在所述第七判断模块判断出所述系统状态为第一设置PIN状态,且所述第三判断模块判断出当前被按下的按键是数字键时,将所述第一键值保存到所述按键数据缓冲区中,更新所述按键数据长度,判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述按键数据缓冲区中的数据存储到密码数据缓冲区中,清空所述按键数据缓冲区,将所述系统状态设置为第二设置PIN状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第二十一处理模块,用于在所述第七判断模块判断出所述系统状态为第一设置PIN状态,且所述第三判断模块判断出当前被按下的按键是删除键时,判断所述按键数据长度是否为零,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第二十二处理模块,用于在所述第七判断模块判断出所述系统状态为第二设置PIN状态,且所述第三判断模块判断出当前被按下的按键是数字键时,执行以下操作:F2、将所述第一键值保存到所述按键数据缓冲区中,更新所述按键数据长度,判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,执行步骤F3;

F3、判断所述按键数据缓冲区中的数据是否与所述密码数据缓冲区中的数据相同,如果是,则执行步骤F5;否则,执行步骤F4;

F4、清空按键数据缓冲区和密码数据缓冲区,将所述系统状态设置为PIN设置错误状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

F5、判断日志开机标志是否置位,如果是,则执行步骤F6;否则,执行步骤F7;

F6、将所述密码设置标志置位,清空所述按键数据缓冲区,将所述系统状态设置为日志显示状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

F7、将所述密码设置标志置位,清空所述按键数据缓冲区,将所述系统状态设置为令牌界面状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第二十三处理模块,用于在所述第七判断模块判断出所述系统状态为第二设置PIN状态,且所述第三判断模块判断出当前被按下的按键是删除键时,判断所述按键数据长度是否为零,如果是,则开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;否则,将所述按键数据缓冲区中最后一次存入的数据删除,更新所述按键数据长度,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

第二十四处理模块,用于在所述第三判断模块判断出当前被按下的按键不是电源键,且所述第七判断模块判断出所述系统状态为PIN设置错误状态时,将所述系统状态设置为第一设置PIN状态,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述第一处理模块,具体用于在所述第三判断模块判断出当前被按下的按键是第一按键,且所述第七判断模块判断出所述系统状态为令牌界面状态时,生成动态口令以及与所述动态口令对应的日志,将所述动态口令存储到显示数据缓冲区,将所述日志存储到日志存储区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;

所述第二处理模块,具体用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合,且所述第七判断模块判断出所述系统状态为日志显示状态时,从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。

说明书 :

一种具有日志功能的动态令牌及其工作方法

技术领域

[0001] 本发明涉及信息安全领域,特别是涉及一种具有日志功能的动态令牌及其工作方法。

背景技术

[0002] 动态令牌是一种用于生成动态口令的设备,广泛应用于网银、电信运营商和电子政务等应用领域。动态令牌所生成的动态口令可用于身份认证,能够有效提高身份认证的安全性。
[0003] 现有技术中,动态口令是与时间相关的、不可预测的随机数字组合,每个动态口令只能使用一次,且动态口令被使用后,无法被再次查看和确认。
[0004] 发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:
[0005] 由于动态口令只能使用一次,动态令牌在显示动态口令一段时间(通常是几十秒钟)后,自动关机,用户无法通过动态令牌查看与已完成的身份认证相关的任何信息,无法确认已完成的身份认证是否为由自身完成的身份认证,因此,现有的使用动态口令的身份认证机制存在安全性缺陷。

发明内容

[0006] 本发明提供了一种具有日志功能的动态令牌及其工作方法,以解决现有技术中使用动态口令进行身份认证的安全性缺陷。
[0007] 本发明提供了一种具有日志功能的动态令牌的工作方法,包括以下步骤:
[0008] S1、动态令牌上电,执行初始化操作,开启总中断和按键唤醒功能;
[0009] S2、所述动态令牌判断是否存在置位的中断标志,如果是,则执行步骤S3;否则,继续执行步骤S2;
[0010] S3、所述动态令牌对置位的中断标志进行判断,如果是定时器中断标志,则执行步骤S4;如果是按键中断标志,则执行步骤S5;
[0011] S4、所述动态令牌将定时器中断标志复位,并返回步骤S2;
[0012] S5、所述动态令牌关闭按键中断,扫描键盘,获取第一键值;
[0013] S6、所述动态令牌根据所述第一键值,对当前被按下的按键进行判断,如果当前被按下的按键是第一按键,则执行步骤S7;如果当前被按下的按键是第二按键,或者是第三按键和第四按键的组合,则执行步骤S8;
[0014] S7、所述动态令牌生成动态口令以及与所述动态口令对应的日志,将所述动态口令存储到显示数据缓冲区,将所述日志存储到日志存储区,开启按键中断,并返回步骤S2;
[0015] S8、所述动态令牌从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并返回步骤S2。
[0016] 本发明还提供了一种具有日志功能的动态令牌,包括:
[0017] 初始化模块,用于在上电之后,执行初始化操作,开启总中断和按键唤醒功能;
[0018] 第一判断模块,用于判断是否存在置位的中断标志;
[0019] 第二判断模块,用于在所述第一判断模块判断出存在置位的中断标志之后,对置位的中断标志进行判断;
[0020] 复位模块,用于在所述第二判断模块判断出所述置位的中断标志是定时器中断标志时,将定时器中断标志复位,并触发所述第一判断模块判断是否存在置位的中断标志;
[0021] 第一获取模块,用于在所述第二判断模块判断出所述置位的中断标志是按键中断标志时,关闭按键中断,扫描键盘,获取第一键值;
[0022] 第三判断模块,用于根据所述第一获取模块获取到的所述第一键值,对当前被按下的按键进行判断;
[0023] 第一处理模块,用于在所述第三判断模块判断出当前被按下的按键是第一按键时,生成动态口令以及与所述动态口令对应的日志,将所述动态口令存储到显示数据缓冲区,将所述日志存储到日志存储区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志;
[0024] 第二处理模块,用于在所述第三判断模块判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,从所述日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,并触发所述第一判断模块判断是否存在置位的中断标志。
[0025] 本发明达到的有益效果:动态令牌在生成动态口令后,生成并记录与该动态口令对应的日志供用户查看,从而记录与已完成的身份认证相关的信息,使得用户能够复核已完成的身份认证是否为由自身完成的身份认证,提高了使用动态口令的身份认证机制以及动态令牌的安全性。

附图说明

[0026] 图1至14为本发明实施例中的一种具有日志功能的动态令牌的工作方法流程图;
[0027] 图15为本发明实施例中的动态令牌存储新增日志的方法流程图;
[0028] 图16为本发明实施例中的动态令牌读取日志的方法流程图;
[0029] 图17为本发明实施例中的一种具有日志功能的动态令牌的结构示意图。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 本发明实施例提供了一种具有日志功能的动态令牌的工作方法,动态令牌判断出按键中断标志被置位后,关闭按键中断,扫描键盘,获取第一键值,并根据第一键值,对当前被按下的按键进行判断,如果当前被按下的按键是第一按键,则生成动态口令以及与该动态口令对应的日志,将动态口令存储到显示数据缓冲区,将日志存储到日志存储区,开启按键中断;如果当前被按下的按键是第三按键和第四按键的组合,则从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,其中,第一按键可以是动态令牌上的确认键,也可以是动态令牌上的其他按键;第三按键可以动态令牌上的是数字键,也可以是动态令牌上的其他按键;第四按键可以是动态令牌上的删除键,也可以是动态令牌上的其他按键。
[0032] 如图1至14所示,为本发明实施例中的一种具有日志功能的动态令牌的工作方法流程图,包括以下步骤:
[0033] 步骤101,动态令牌上电,执行初始化操作。
[0034] 步骤102,动态令牌开启总中断和按键唤醒功能。
[0035] 步骤103,动态令牌判断是否存在置位的中断标志,如果是,则执行步骤104;否则,执行步骤252。
[0036] 步骤104,动态令牌对置位的中断标志进行判断,如果是定时器中断标志,则执行步骤105;如果是按键中断标志,则执行步骤106;如果是其他中断标志,则将置位的中断标志复位,执行相应的操作,并返回步骤103。
[0037] 需要说明的是,当动态令牌中的定时器溢出时,动态令牌接收到定时器中断,通过硬件将定时器中断标志置位;当动态令牌上的按键被触发时,动态令牌接收到按键中断,通过硬件将按键中断标志置位;动态令牌接收到其他中断时,通过硬件将对应的中断标志置位。
[0038] 步骤105,动态令牌将定时器中断标志复位,并返回步骤103。
[0039] 步骤106,动态令牌关闭按键中断,将长按键标志复位,并延时第一预设时长。
[0040] 其中,第一预设时长可以为20ms。
[0041] 步骤107,动态令牌扫描键盘,获取第一键值。
[0042] 步骤108,动态令牌判断第一键值是否为空或错误键值,如果是,则开启按键中断,并返回步骤103;否则,执行步骤109。
[0043] 步骤109,动态令牌延时第二预设时长,保存第一键值,扫描键盘,获取第二键值。
[0044] 其中,第二预设时长可以为20ms。
[0045] 步骤110,动态令牌判断第二键值是否与第一键值相同,如果是,则执行步骤111;否则,开启按键中断,并返回步骤103。
[0046] 步骤111,动态令牌根据第一键值,判断当前被按下的按键是否为电源键,如果是,则执行步骤113;否则,执行步骤112;
[0047] 步骤112,动态令牌根据第一键值,判断当前被按下的按键是否为第三按键和第四按键的组合,如果是,则执行步骤113;否则,执行步骤125。
[0048] 其中,第三按键可以为数字键,例如,“1”,第四按键可以为删除键。
[0049] 步骤113,动态令牌将定时器的溢出时间设置为第三预设时长,将溢出次数设置为第一预设值。
[0050] 其中,第三预设时长可以为100ms。
[0051] 步骤114,动态令牌开启总中断和定时器的计时功能,将时钟源切换至低速时钟,进入休眠模式。
[0052] 步骤115,动态令牌被唤醒后,关闭定时器的计时功能,将时钟源切换至高速时钟。
[0053] 步骤116,动态令牌判断定时器中断标志是否置位,如果是,则执行步骤117;否则,返回步骤114。
[0054] 步骤117,动态令牌判断关闭总中断,将定时器中断标志复位。
[0055] 步骤118,动态令牌扫描键盘,获取第三键值。
[0056] 步骤119,动态令牌判断第三键值是否为空按键,如果是,则执行步骤125;否则,执行步骤120。
[0057] 步骤120,动态令牌判断第三键值是否为错误按键,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤121。
[0058] 步骤121,动态令牌判断第三键值是否与第一键值相同,如果是,则执行步骤122;否则,开启按键中断和总中断,并返回步骤103。
[0059] 步骤122,动态令牌对溢出次数进行更新。
[0060] 步骤123,动态令牌判断溢出次数是否为第二预设值,如果是,则执行步骤124;否则,返回步骤114。
[0061] 步骤124,动态令牌将长按键标志置位。
[0062] 步骤125,动态令牌根据第一键值,判断当前被按下的按键是否为电源键,如果是,则执行步骤126;否则,执行步骤134。
[0063] 步骤126,动态令牌判断系统状态是否为关机状态,如果是,则执行步骤128;否则,执行步骤127。
[0064] 步骤127,动态令牌清空按键数据缓冲区和显示数据缓冲区,将系统状态设置为关机状态,将日志开机标志复位,开启按键中断和总中断,并返回步骤103。
[0065] 步骤128,动态令牌判断长按键标志是否置位,如果是,则执行步骤129;否则,开启按键中断和总中断,并返回步骤103。
[0066] 需要说明的是,在步骤124中,动态令牌判断出溢出次数为第二预设值时,将长按键标志置位。
[0067] 步骤129,动态令牌判断令牌锁定标志是否置位,如果是,则执行步骤130;否则,执行步骤131。
[0068] 需要说明的是,在步骤168中,动态令牌判断出令牌验证错误次数为第一预设次数时,将令牌锁定标志置位。
[0069] 步骤130,动态令牌将系统状态设置为显示解锁挑战码状态,显示令牌锁定信息,开启按键中断和总中断,并返回步骤103。
[0070] 步骤131,动态令牌判断密码设置标志是否置位,如果是,则执行步骤132;否则,执行步骤133。
[0071] 需要说明的是,在步骤155中,动态令牌设置密码成功时,将密码设置标志置位。
[0072] 步骤132,动态令牌将系统状态设置为验证令牌PIN状态,显示令牌验证信息,开启按键中断和总中断,并返回步骤103。
[0073] 步骤133,动态令牌将系统状态设置为第一设置PIN状态,显示第一设置PIN信息,开启按键中断和总中断,并返回步骤103。
[0074] 步骤134,动态令牌对系统状态进行判断,如果是关机状态,则执行步骤135;如果是第一设置PIN状态,则执行步骤141;如果是第二设置PIN状态,则执行步骤148;如果是PIN设置错误状态,则执行步骤159;如果是验证令牌PIN状态,则执行步骤160;如果是PIN错误状态,则执行步骤172;如果是显示解锁挑战码状态,则执行步骤175;如果是等待输入解锁码状态,则执行步骤176;如果是令牌界面状态,则执行步骤186;如果是显示动态口令状态,则执行步骤213;如果是验证日志PIN状态,则执行步骤215;如果是日志显示状态,则执行步骤228。
[0075] 步骤135,动态令牌根据第一键值,判断当前被按下的按键是否为第三按键和第四按键的组合,如果是,则执行步骤136;否则,开启按键中断和总中断,并返回步骤103。
[0076] 步骤136,动态令牌判断长按键标志是否置位,如果是,则执行步骤137;否则,开启按键中断和总中断,并返回步骤103。
[0077] 步骤137,动态令牌将日志开机标志置位。
[0078] 步骤138,动态令牌判断日志锁定标志是否置位,如果是,则执行步骤139;否则,执行步骤140。
[0079] 需要说明的是,在步骤223中,动态令牌判断出日志验证错误次数为第二预设次数时,将日志锁定标志置位。
[0080] 步骤139,动态令牌将系统状态设置为显示解锁挑战码状态,显示日志锁定信息,开启按键中断和总中断,并返回步骤103。
[0081] 步骤140,动态令牌将系统状态设置为验证日志PIN状态,显示日志验证信息,开启按键中断和总中断,并返回步骤103。
[0082] 步骤141,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤142;如果是删除键,则执行步骤146。
[0083] 步骤142,动态令牌将第一键值保存到按键数据缓冲区中,更新按键数据长度。
[0084] 具体地,动态令牌将按键数据长度加1,作为更新后的按键数据长度。
[0085] 步骤143,动态令牌判断按键数据长度是否小于第一预设长度,如果是,则执行步骤144;否则,执行步骤145。
[0086] 其中,第一预设长度为PIN的长度。
[0087] 步骤144,动态令牌对第一设置PIN信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0088] 步骤145,动态令牌将按键数据缓冲区中的数据存储到密码数据缓冲区中,清空按键数据缓冲区,将系统状态设置为第二设置PIN状态,显示第二设置PIN信息,开启按键中断和总中断,并返回步骤103。
[0089] 步骤146,动态令牌判断按键数据长度是否为零,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤147。
[0090] 步骤147,动态令牌将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,对第一设置PIN信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0091] 具体地,动态令牌将按键数据长度减1,作为更新后的按键数据长度。
[0092] 步骤148,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤149;如果是删除键,则执行步骤157。
[0093] 步骤149,动态令牌将第一键值保存到按键数据缓冲区中,更新按键数据长度。
[0094] 具体地,动态令牌将按键数据长度加1,作为更新后的按键数据长度。
[0095] 步骤150,动态令牌判断按键数据长度是否小于第一预设长度,如果是,则执行步骤151;否则,执行步骤152。
[0096] 步骤151,动态令牌对第二设置PIN信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0097] 步骤152,动态令牌判断按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤154;否则,执行步骤153。
[0098] 步骤153,动态令牌清空按键数据缓冲区和密码数据缓冲区,将系统状态设置为PIN设置错误状态,显示PIN设置错误信息,开启按键中断和总中断,并返回步骤103。
[0099] 步骤154,动态令牌判断日志开机标志是否置位,如果是,则执行步骤155;否则,执行步骤156。
[0100] 需要说明的是,在步骤137中,动态令牌判断出当前被按下的按键为第三按键和第四按键的组合,且长按键标志置位时,将日志开机标志置位。
[0101] 步骤155,动态令牌将密码设置标志置位,清空按键数据缓冲区,将系统状态设置为日志显示状态,显示日志界面信息,开启按键中断和总中断,并返回步骤103。
[0102] 步骤156,动态令牌将密码设置标志置位,清空按键数据缓冲区,将系统状态设置为令牌界面状态,显示令牌界面信息,开启按键中断和总中断,并返回步骤103。
[0103] 步骤157,动态令牌判断按键数据长度是否为零,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤158。
[0104] 步骤158,动态令牌将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,对第二设置PIN信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0105] 具体地,动态令牌将按键数据长度减1,作为更新后的按键数据长度。
[0106] 步骤159,动态令牌将系统状态设置为第一设置PIN状态,显示第一设置PIN信息,开启按键中断和总中断,并返回步骤103。
[0107] 步骤160,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤161;如果是删除键,则执行步骤170。
[0108] 步骤161,动态令牌将第一键值保存到按键数据缓冲区中,更新按键数据长度。
[0109] 具体地,动态令牌将按键数据长度加1,作为更新后的按键数据长度。
[0110] 步骤162,动态令牌判断按键数据长度是否小于第一预设长度,如果是,则执行步骤163;否则,执行步骤164。
[0111] 步骤163,动态令牌对令牌验证信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0112] 步骤164,动态令牌判断按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤165;否则,执行步骤166。
[0113] 步骤165,动态令牌清空按键数据缓冲区,将令牌验证错误次数清零,将系统状态设置为令牌界面状态,显示令牌界面信息,开启按键中断和总中断,并返回步骤103。
[0114] 步骤166,动态令牌清空按键数据缓冲区,对令牌验证错误次数进行更新。
[0115] 具体地,动态令牌将令牌验证错误次数加1,作为更新后的令牌验证错误次数。
[0116] 步骤167,动态令牌判断令牌验证错误次数是否为第一预设次数,如果是,则执行步骤168;否则,执行步骤169。
[0117] 步骤168,动态令牌将令牌锁定标志置位,将系统状态设置为显示解锁挑战码状态,显示令牌锁定信息,开启按键中断和总中断,并返回步骤103。
[0118] 步骤169,动态令牌将系统状态设置为PIN错误状态,显示PIN错误信息,开启按键中断和总中断,并返回步骤103。
[0119] 步骤170,动态令牌判断按键数据长度是否为零,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤171。
[0120] 步骤171,动态令牌将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,对令牌验证信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0121] 具体地,动态令牌将按键数据长度减1,作为更新后的按键数据长度。
[0122] 步骤172,动态令牌判断日志开机标志是否置位,如果是,则执行步骤174;否则,执行步骤173。
[0123] 步骤173,动态令牌将系统状态设置为验证令牌PIN状态,显示令牌验证信息,开启按键中断和总中断,并返回步骤103。
[0124] 步骤174,动态令牌将系统状态设置为验证日志PIN状态,显示日志验证信息,开启按键中断和总中断,并返回步骤103。
[0125] 步骤175,动态令牌生成解锁挑战码,将系统状态设置为等待输入解锁码状态,显示解锁挑战码,开启按键中断和总中断,并返回步骤103。
[0126] 步骤176,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤177;如果是删除键,则执行步骤184。
[0127] 步骤177,动态令牌将第一键值保存到按键数据缓冲区中,更新按键数据长度。
[0128] 具体地,动态令牌将按键数据长度加1,作为更新后的按键数据长度。
[0129] 步骤178,动态令牌判断按键数据长度是否小于第二预设长度,如果是,则执行步骤179;否则,执行步骤180。
[0130] 其中,第二预设长度为解锁码的长度。
[0131] 步骤179,动态令牌显示解锁码输入信息,开启按键中断和总中断,并返回步骤103。
[0132] 步骤180,动态令牌根据解锁挑战码,对按键数据缓冲区中的数据进行验证,如果验证通过,则执行步骤181;否则,执行步骤182。
[0133] 步骤181,动态令牌清空按键数据缓冲区,将令牌锁定标志、日志锁定标志和密码设置标志复位,将系统状态设置为第一设置PIN状态,显示第一设置PIN信息,开启按键中断和总中断,并返回步骤103。
[0134] 步骤182,动态令牌清空按键数据缓冲区,将系统状态设置为解锁码错误状态,显示解锁码错误信息。
[0135] 步骤183,动态令牌延时第四预设时长,将系统状态设置为关机状态,开启按键中断和总中断,并返回步骤103。
[0136] 步骤184,动态令牌判断按键数据长度是否为零,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤185。
[0137] 步骤185,动态令牌将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,对解锁码输入信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0138] 具体地,动态令牌将按键数据长度减1,作为更新后的按键数据长度。
[0139] 步骤186,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤187;如果是删除键,则执行步骤192;如果是左键,则执行步骤197;如果是右键,则执行步骤201;如果是确认键,则执行步骤205。
[0140] 步骤187,动态令牌判断按键数据长度是否小于第三预设长度,如果是,则执行步骤188;否则,开启按键中断和总中断,并返回步骤103。
[0141] 其中,第三预设长度为挑战码的长度。
[0142] 步骤188,动态令牌将第一键值保存到按键数据缓冲区中,更新按键数据长度。
[0143] 具体地,动态令牌将按键数据长度加1,作为更新后的按键数据长度。
[0144] 步骤189,动态令牌判断显示数据长度是否小于第四预设长度,如果是,则执行步骤190;否则,执行步骤191。
[0145] 其中,第四预设长度为显示数据缓冲区的总长度。
[0146] 步骤190,动态令牌将第一键值保存到显示数据缓冲区中,更新显示数据长度,开启按键中断和总中断,并返回步骤103。
[0147] 具体地,动态令牌将显示数据长度加1,作为更新后的显示数据长度。
[0148] 步骤191,动态令牌将显示数据缓冲区中最早一次存入的数据删除,将显示数据缓冲区中剩余的数据前移,将第一键值保存到按键数据缓冲区中,开启按键中断和总中断,并返回步骤103。
[0149] 具体地,动态令牌将显示数据缓冲区中最早一次存入的数据删除后,将显示数据缓冲区中剩余的数据前移至以显示数据缓冲区的首地址为起始位置的连续存储空间,将第一键值保存到该连续存储空间的末尾。
[0150] 步骤192,动态令牌判断按键数据长度是否为零,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤193。
[0151] 步骤193,动态令牌将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度。
[0152] 步骤194,动态令牌判断按键数据长度是否小于第四预设长度,如果是,则执行步骤195;否则,执行步骤196。
[0153] 步骤195,动态令牌将按键数据缓冲区中的数据存储到显示数据缓冲区中,将显示数据长度设置为按键数据长度,开启按键中断和总中断,并返回步骤103。
[0154] 步骤196,动态令牌从按键数据缓冲区中选取最晚存入的、第四预设长度的数据,将选取的数据存储到显示数据缓冲区中,将显示数据长度设置为第四预设长度,开启按键中断和总中断,并返回步骤103。
[0155] 步骤197,动态令牌判断显示数据缓冲区中是否存在比按键数据缓冲区中的数据更早存入的未显示数据,如果是,则执行步骤198;否则,开启按键中断和总中断,并返回步骤103。
[0156] 步骤198,动态令牌判断未显示数据的长度是否小于第四预设长度,如果是,则执行步骤199;否则,执行步骤200。
[0157] 步骤199,动态令牌将未显示数据存储到显示数据缓冲区中,将显示数据长度设置为未显示数据的长度,开启按键中断和总中断,并返回步骤103。
[0158] 步骤200,动态令牌从未显示数据中选取最晚存入的、第四预设长度的数据,将选取的数据存储到显示数据缓冲区中,将显示数据长度设置为第四预设长度,开启按键中断和总中断,并返回步骤103。
[0159] 步骤201,动态令牌判断显示数据缓冲区中是否存在比按键数据缓冲区中的数据更晚存入的未显示数据,如果是,则执行步骤202;否则,开启按键中断和总中断,并返回步骤103。
[0160] 步骤202,动态令牌判断未显示数据的长度是否小于第四预设长度,如果是,则执行步骤203;否则,执行步骤204。
[0161] 步骤203,动态令牌将未显示数据存储到显示数据缓冲区中,将显示数据长度设置为未显示数据的长度,开启按键中断和总中断,并返回步骤103。
[0162] 步骤204,动态令牌从未显示数据中选取最早存入的、第四预设长度的数据,将选取的数据存储到显示数据缓冲区中,将显示数据长度设置为第四预设长度,开启按键中断和总中断,并返回步骤103。
[0163] 步骤205,动态令牌判断按键数据长度是否为零,如果是,则执行步骤206;否则,执行步骤211。
[0164] 步骤206,动态令牌根据时间因子,生成动态口令以及与该动态口令对应的新增日志,将动态口令存储到显示数据缓冲区中。
[0165] 具体地,动态令牌根据时间因子生成时间型动态口令,为新增日志分配索引,将与时间因子对应的时间信息的长度作为新增日志的长度,对索引、新增日志的长度以及与时间因子对应的时间信息进行组合,得到新增日志。
[0166] 步骤207,动态令牌判断日志条数是否为零,如果是,则执行步骤208;否则,执行步骤209。
[0167] 步骤208,动态令牌将新增日志存储到日志存储区中,将最前日志索引和最后日志索引均设置为新增日志中的索引,更新日志条数,将系统状态设置为显示动态口令状态,开启按键中断和总中断,并返回步骤103。
[0168] 具体地,动态令牌将日志条数加1,作为更新后的日志条数。
[0169] 步骤209,动态令牌判断新增日志占用的空间是否大于日志存储区中的剩余空间,如果是,则执行步骤210;否则,将新增日志存储到日志存储区中,更新日志条数和最后日志索引,将系统状态设置为显示动态口令状态,开启按键中断和总中断,并返回步骤103。
[0170] 具体地,动态令牌可以将最后日志索引更新为新增日志中的索引。
[0171] 步骤210,动态令牌将日志存储区中最早一次存入的日志删除,将日志存储区中剩余的日志前移,更新日志条数和最前日志索引,并返回步骤209。
[0172] 具体地,动态令牌将显示数据缓冲区中最早一次存入的日志删除后,将日志存储区中剩余的日志前移至以日志存储区的首地址为起始位置的连续存储空间,将日志条数减1,作为更新后的日志条数,并将最前日志索引加1。
[0173] 步骤211,动态令牌清空显示数据缓冲区,将按键数据缓冲区中的数据作为挑战码,生成动态口令以及与该动态口令对应的新增日志。
[0174] 具体地,动态令牌根据时间因子和挑战码生成挑战型动态口令,为新增日志分配索引,对与挑战码对应的交易信息进行压缩,得到压缩交易数据,获取与时间因子对应的时间信息的长度和压缩交易数据的长度之和作为新增日志的长度,对索引、新增日志的长度、与时间因子对应的时间信息,以及压缩交易数据进行组合,得到新增日志。
[0175] 步骤212,动态令牌将动态口令存储到显示数据缓冲区中,清空按键数据缓冲区,并返回步骤207。
[0176] 步骤213,动态令牌根据第一键值,判断当前被按下的按键是否为数字键或删除键,如果是,则清空显示数据缓冲区,并执行步骤214;否则,开启按键中断和总中断,并返回步骤103。
[0177] 步骤214,动态令牌将系统状态设置为令牌界面状态,显示令牌界面信息,开启按键中断和总中断,并返回步骤103。
[0178] 步骤215,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是数字键,则执行步骤216;如果是删除键,则执行步骤226。
[0179] 步骤216,动态令牌将第一键值保存到按键数据缓冲区中,更新按键数据长度。
[0180] 具体地,动态令牌将按键数据长度加1,作为更新后的按键数据长度。
[0181] 步骤217,动态令牌判断按键数据长度是否小于第一预设长度,如果是,则执行步骤218;否则,执行步骤219。
[0182] 步骤218,动态令牌对日志验证信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0183] 步骤219,动态令牌判断按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤220;否则,执行步骤221。
[0184] 步骤220,动态令牌清空按键数据缓冲区,将日志验证错误次数清零,将系统状态设置为日志显示状态,将时间信息显示标志置位,将当前日志索引设置为最后日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志存储到日志缓冲区中,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断和总中断,并返回步骤103。
[0185] 本实施例中,动态令牌根据当前日志索引从日志存储区中读取对应的日志,具体包括:动态令牌将读取指针设置为日志存储区的首地址,根据读取指针,从日志存储区中读取对应的日志,判断读取到的日志中的索引是否与当前日志索引相同,如果是,则确定读取到的日志为与所述当前日志索引对应的日志;否则,根据读取到的日志占用的空间大小更新读取指针,并继续根据读取指针,从日志存储区中读取对应的日志,直到读取到的日志中的索引与当前日志索引相同。
[0186] 步骤221,动态令牌清空按键数据缓冲区,对日志验证错误次数进行更新。
[0187] 具体地,动态令牌将日志验证错误次数加1,作为更新后的日志验证错误次数。
[0188] 步骤222,动态令牌判断日志验证错误次数是否为第二预设次数,如果是,则执行步骤223;否则,执行步骤224。
[0189] 步骤223,动态令牌将日志锁定标志置位,将系统状态设置为显示解锁挑战码状态,显示日志锁定信息,开启按键中断和总中断,并返回步骤103。
[0190] 步骤224,动态令牌将系统状态设置为PIN错误状态,显示PIN错误信息。
[0191] 步骤225,动态令牌开启按键中断和总中断,并返回步骤103。
[0192] 步骤226,动态令牌判断按键数据长度是否为零,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤227。
[0193] 步骤227,动态令牌将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,对日志验证信息进行更新显示,开启按键中断和总中断,并返回步骤103。
[0194] 具体地,动态令牌将按键数据长度减1,作为更新后的按键数据长度。
[0195] 步骤228,动态令牌判断时间信息显示标志是否置位,如果是,则执行步骤229;否则,执行步骤240。
[0196] 需要说明的是,在步骤220中,动态令牌判断出按键数据缓冲区中的数据与密码数据缓冲区中的数据相同时,将时间信息显示标志置位。
[0197] 步骤229,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是确认键,则执行步骤230;如果是左键,则执行步骤236;如果是右键,则执行步骤238。
[0198] 步骤230,动态令牌判断日志缓冲区中的日志的长度是否为第五预设长度,如果是,则执行步骤231;否则,执行步骤232。
[0199] 其中,第五预设长度为日志中的时间信息的长度。
[0200] 步骤231,动态令牌显示空白交易信息,将时间信息显示标志复位,开启按键中断和总中断,并返回步骤103。
[0201] 步骤232,动态令牌将时间信息显示标志复位,从日志缓冲区中的日志中获取压缩交易数据,对所述压缩交易数据进行解压,得到当前交易信息。
[0202] 步骤233,动态令牌判断当前交易信息的长度是否大于第四预设长度,如果是,则执行步骤234;否则,执行步骤235。
[0203] 步骤234,动态令牌从当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断和总中断,并返回步骤103。
[0204] 步骤235,动态令牌将当前交易信息存储到显示数据缓冲区中,开启按键中断和总中断,并返回步骤103。
[0205] 步骤236,动态令牌判断当前日志索引是否等于最前日志索引,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤237。
[0206] 步骤237,动态令牌更新当前日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断和总中断,并返回步骤103。
[0207] 具体地,动态令牌可以将当前日志索引减1。
[0208] 步骤238,动态令牌判断当前日志索引是否等于最后日志索引,如果是,则开启按键中断和总中断,并返回步骤103;否则,执行步骤239。
[0209] 步骤239,动态令牌更新当前日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断和总中断,并返回步骤103。
[0210] 具体地,动态令牌可以将当前日志索引加1。
[0211] 步骤240,动态令牌根据第一键值,对当前被按下的按键进行判断,如果是确认键,则执行步骤241;
[0212] 如果是左键,则执行步骤242;
[0213] 如果是右键,则执行步骤247。
[0214] 步骤241,动态令牌将时间信息显示标志置位,从日志缓冲区中的日志中读取时间信息,将读取到的时间信息存储到显示数据缓冲区中,开启按键中断和总中断,并返回步骤103。
[0215] 步骤242,动态令牌判断显示屏上的左箭头是否被点亮,如果是,执行步骤243;否则,开启按键中断和总中断,并返回步骤103。
[0216] 步骤243,动态令牌从当前交易信息中读取与当前显示信息相邻,且存储位置更靠前的数据作为未显示数据。
[0217] 步骤244,动态令牌判断未显示数据的长度是否大于第四预设长度,如果是,则执行步骤245;否则,执行步骤246。
[0218] 步骤245,动态令牌从未显示数据中选取存储位置最靠后的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断和总中断,并返回步骤103。
[0219] 步骤246,动态令牌将未显示数据存储到显示数据缓冲区中,点亮显示屏上的右箭头,熄灭显示屏上的左箭头,开启按键中断和总中断,并返回步骤103。
[0220] 步骤247,动态令牌判断显示屏上的右箭头是否被点亮,如果是,执行步骤248;否则,开启按键中断和总中断,并返回步骤103。
[0221] 步骤248,动态令牌从当前交易信息中读取与当前显示信息相邻,且存储位置更靠后的数据作为未显示数据。
[0222] 步骤249,动态令牌判断未显示数据的长度是否大于第四预设长度,如果是,则执行步骤250;否则,执行步骤251。
[0223] 步骤250,动态令牌从未显示数据中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的左箭头,开启按键中断和总中断,并返回步骤103。
[0224] 步骤251,动态令牌将未显示数据存储到显示数据缓冲区中,点亮显示屏上的左箭头,熄灭显示屏上的右箭头,开启按键中断和总中断,并返回步骤103。
[0225] 步骤252,动态令牌开启总中断,将时钟源切换至低速时钟,进入休眠模式。
[0226] 步骤253,动态令牌被唤醒后,将时钟源切换至高速时钟,并返回步骤103。
[0227] 本发明实施例中的动态令牌在生成动态口令后,生成并记录与该动态口令对应的日志供用户查看,从而记录与已完成的身份认证相关的信息,使得用户能够复核已完成的身份认证是否为由自身完成的身份认证,提高了使用动态口令的身份认证机制以及动态令牌的安全性。
[0228] 需要说明的是,在本发明的其他实施方式中,动态令牌根据第一键值,对当前被按下的按键进行判断,如果当前被按下的按键是第一按键,则生成动态口令以及与该动态口令对应的日志,将动态口令存储到显示数据缓冲区,将日志存储到日志存储区,开启按键中断;如果当前被按下的按键是第二按键,则从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,同样可以达到本发明的发明目的。
[0229] 另外,在本发明的其他实施方式中,动态令牌根据第一键值,判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,还可以开启按键中断,并在判断出置位的中断标志是按键中断标志后,关闭按键中断,扫描键盘,根据扫描得到的键值判断出当前被按下的按键为第五按键后,从日志存储区中读取日志,将读取到的日志存储到所述显示数据缓冲区,开启按键中断,同样可以达到本发明的发明目的。
[0230] 此外,在本发明的其他实施方式中,动态令牌还可以采用循环队列的方式将新增日志存储到日志存储区,如图15所示,包括以下步骤:
[0231] 步骤301,动态令牌判断新增日志占用的空间是否大于日志存储区中的剩余空间,如果是,则执行步骤302;否则,执行步骤304。
[0232] 步骤302,动态令牌根据最前记录指针,从日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新最前记录指针和日志存储区中的剩余空间。
[0233] 具体地,动态令牌可以将最前记录指针和日志存储区中的剩余空间分别与读取到的日志占用的空间大小相加,将得到的结果分别作为更新后的最前记录指针和日志存储区中的剩余空间。
[0234] 步骤303,动态令牌根据最前记录指针,从日志存储区中读取对应的日志,将读取到的日志的索引作为最前日志索引,更新日志条数,并返回步骤301。
[0235] 具体地,动态令牌可以将日志条数减1。
[0236] 步骤304,动态令牌判断日志条数是否为零,如果是,则执行步骤306;否则,执行步骤305。
[0237] 步骤305,动态令牌根据最后记录指针,从日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新最后记录指针,并执行步骤306。
[0238] 具体地,动态令牌可以将最后记录指针与读取到的日志占用的空间大小相加,将得到的结果作为更新后的最后记录指针。
[0239] 步骤306,动态令牌将临时计数器的计数值设置为零,将临时指针的取值设置为最后记录指针的取值,将当前日志字节设置为新增日志的首字节。
[0240] 步骤307,动态令牌判断临时指针的取值是否小于日志存储区的空间大小,如果是,则执行步骤308;否则,将临时指针的取值置为零,并执行步骤308。
[0241] 步骤308,动态令牌将当前日志字节存储到临时指针对应的位置,更新临时指针和临时计数器的计数值,将当前日志字节的下一字节作为更新后的当前日志字节。
[0242] 具体地,动态令牌可以将临时指针加1,将临时计数器的计数值加1。
[0243] 步骤309,动态令牌判断临时计数器的计数值是否小于新增日志占用的空间大小,如果是,则返回步骤307;否则,执行步骤310。
[0244] 步骤310,动态令牌将最后日志索引设置为新增日志的索引,更新日志条数,并根据新增日志占用的空间大小,更新日志存储区中的剩余空间。
[0245] 具体地,动态令牌可以将日志条数加1,将日志存储区中的剩余空间减去新增日志占用的空间大小,作为更新后的日志存储区中的剩余空间。
[0246] 基于上述日志存储方式,动态令牌根据当前日志索引从日志存储区中读取对应的日志的流程,如图16所示,包括以下步骤:
[0247] 步骤401,动态令牌将临时指针的取值设置为最前记录指针的取值。
[0248] 步骤402,动态令牌根据所述临时指针,从日志存储区中读取对应的索引,获取与该索引对应的日志所占用的空间大小。
[0249] 步骤403,动态令牌判断读取到的索引是否与当前日志索引相同,如果是,则执行步骤406;否则,执行步骤404。
[0250] 步骤404,动态令牌根据日志所占用的空间大小更新临时指针。
[0251] 具体地,动态令牌可以将临时指针与日志所占用的空间大小相加,将得到的结果作为更新后的临时指针。
[0252] 步骤405,动态令牌判断临时指针的取值是否小于日志存储区的空间大小,如果是,则返回步骤402;否则,根据日志存储区的空间大小更新临时指针,并返回步骤402。
[0253] 具体地,动态令牌可以将临时指针减去日志存储区的空间大小,将得到的结果作为更新后的临时指针。
[0254] 步骤406,动态令牌将临时计数器的计数值设置为日志所占用的空间大小。
[0255] 步骤407,动态令牌根据临时指针,从日志存储区中读取一个字节的数据,并更新临时指针和临时计数器的计数值。
[0256] 具体地,动态令牌可以将临时指针加1,将临时计数器的计数值减1。
[0257] 步骤408,动态令牌判断临时指针的取值是否小于日志存储区的空间大小,如果是,则执行步骤409;否则,根据日志存储区的空间大小更新临时指针,并执行步骤409。
[0258] 具体地,动态令牌可以将临时指针减去日志存储区的空间大小,将得到的结果作为更新后的临时指针。
[0259] 步骤409,动态令牌判断临时计数器的计数值是否大于零,如果是,则返回步骤407;否则,确定从日志存储区中读取与当前日志索引对应的日志完毕。
[0260] 基于上述工作方法流程,本发明实施例还提供了一种具有日志功能的动态令牌,如图17所示,包括:
[0261] 初始化模块501,用于在上电之后,执行初始化操作,开启总中断和按键唤醒功能;
[0262] 第一判断模块502,用于判断是否存在置位的中断标志;
[0263] 第二判断模块503,用于在第一判断模块502判断出存在置位的中断标志之后,对置位的中断标志进行判断;
[0264] 复位模块504,用于在第二判断模块503判断出置位的中断标志是定时器中断标志时,将定时器中断标志复位,并触发第一判断模块502判断是否存在置位的中断标志;
[0265] 第一获取模块505,用于在第二判断模块503判断出置位的中断标志是按键中断标志时,关闭按键中断,扫描键盘,获取第一键值;
[0266] 第三判断模块506,用于根据第一获取模块505获取到的第一键值,对当前被按下的按键进行判断;
[0267] 第一处理模块507,用于在第三判断模块506判断出当前被按下的按键是第一按键时,生成动态口令以及与动态口令对应的日志,将动态口令存储到显示数据缓冲区,将日志存储到日志存储区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0268] 第二处理模块508,用于在第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0269] 具体地,上述第二处理模块508,具体用于在第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,执行以下操作:
[0270] T1、开启按键中断,判断是否存在置位的中断标志,如果是,则执行步骤T2;否则,继续执行步骤T1;
[0271] T2、判断出置位的中断标志是按键中断标志后,关闭按键中断,扫描键盘;
[0272] T3、根据扫描得到的键值判断出当前被按下的按键为第五按键后,从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0273] 其中,上述第一按键可以为确认键,相应地,上述动态令牌,还包括:
[0274] 第三处理模块,用于在第三判断模块506判断出当前被按下的按键是数字键时,判断按键数据长度是否小于第三预设长度,如果是,则将第一键值保存到按键数据缓冲区和显示数据缓冲区中,更新按键数据长度,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;在第三判断模块506判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,将显示数据缓冲区中最后一次存入的数据删除,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0275] 上述第一处理模块507,包括:
[0276] 第一判断子模块,用于在第三判断模块506判断出当前被按下的按键是确认键时,判断按键数据长度是否为零;
[0277] 第一生成子模块,用于在第一判断子模块判断出按键数据长度为零时,根据时间因子,生成动态口令以及与动态口令对应的新增日志;
[0278] 具体地,上述第一生成子模块,具体用于在第一判断子模块判断出按键数据长度为零时,根据时间因子生成时间型动态口令,为新增日志分配索引,将与时间因子对应的时间信息的长度作为新增日志的长度,对索引、新增日志的长度以及与时间因子对应的时间信息进行组合,得到新增日志。
[0279] 第二生成子模块,用于在第一判断子模块判断出按键数据长度不为零时,将按键数据缓冲区中的数据作为挑战码,生成动态口令以及与动态口令对应的新增日志;
[0280] 具体地,上述第二生成子模块,具体用于在第一判断子模块判断出按键数据长度不为零时,根据时间因子和挑战码,生成挑战型动态口令,为新增日志分配索引,对与挑战码对应的交易信息进行压缩,得到压缩交易数据,获取与时间因子对应的时间信息的长度和压缩交易数据的长度之和作为新增日志的长度,对索引、新增日志的长度、与时间因子对应的时间信息,以及压缩交易数据进行组合,得到新增日志。
[0281] 第一存储子模块,用于将第一生成子模块和第二生成子模块生成的动态口令存储到显示数据缓冲区中;
[0282] 第二存储子模块,用于将第一生成子模块和第二生成子模块生成的新增日志存储到日志存储区;
[0283] 开启子模块,用于在第一生成子模块或第二生成子模块生成动态口令和新增日志后,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0284] 具体地,上述第二存储子模块,具体用于判断日志条数是否为零,如果是,则将新增日志存储到日志存储区中,将最前日志索引和最后日志索引均设置为新增日志中的索引,更新日志条数;否则,将新增日志存储到日志存储区中,将最后日志索引设置为新增日志中的索引,更新日志条数。
[0285] 进一步地,上述第二处理模块508,具体用于将当前日志索引设置为最后日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志存储到日志缓冲区中,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0286] 相应地,上述动态令牌,还包括:
[0287] 第四处理模块,用于在第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是左键时,判断当前日志索引是否等于最前日志索引,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0288] 第五处理模块,用于在第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是右键时,判断当前日志索引是否等于最后日志索引,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0289] 进一步地,上述动态令牌,还包括:
[0290] 第四判断模块,用于判断时间信息显示标志是否置位;
[0291] 相应地,上述第四处理模块,具体用于在第四判断模块判断出时间信息显示标志置位、第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是左键时,判断当前日志索引是否等于最前日志索引,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0292] 第五处理模块,具体用于在第四判断模块判断出时间信息显示标志置位、第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是右键时,判断当前日志索引是否等于最后日志索引,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,更新当前日志索引,根据当前日志索引从日志存储区中读取对应的日志,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0293] 上述动态令牌,还包括:
[0294] 第六处理模块,具体用于在在第四判断模块判断出时间信息显示标志置位、第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是确认键时,执行以下操作:
[0295] R1、判断日志缓冲区中的日志的长度是否为第五预设长度,如果是,则执行步骤R2;否则,执行步骤R3;
[0296] R2、显示空白交易信息,将时间信息显示标志复位,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0297] R3、将时间信息显示标志复位,从日志缓冲区中的日志中获取压缩交易数据,对压缩交易数据进行解压,判断解压得到的当前交易信息的长度是否大于第四预设长度,如果是,则执行步骤R4;否则,执行步骤R5;
[0298] R4、从当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0299] R5、将当前交易信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0300] 需要说明的是,在本发明的另一种实施方式中,上述第二处理模块508,具体用于在第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,将当前日志索引设置为最后日志索引,根据当前日志索引从日志存储区中读取对应的日志,对读取到的日志中的压缩交易数据进行解压,将解压得到的当前交易信息存储到日志缓冲区中,判断当前交易信息是否大于第四预设长度,如果是,则从当前交易信息中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将当前交易信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0301] 相应地,上述动态令牌,还包括:
[0302] 第七处理模块,用于在第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是左键时,判断显示屏上的左箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;如果被点亮,则从当前交易信息中读取与当前显示信息相邻,且存储位置更靠前的数据作为未显示数据,判断未显示数据的长度是否大于第四预设长度,如果是,则从未显示数据中选取存储位置最靠后的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将未显示数据存储到显示数据缓冲区中,点亮显示屏上的右箭头,熄灭显示屏上的左箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0303] 第八处理模块,用于在第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是右键时,判断显示屏上的右箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;如果被点亮,则从当前交易信息中读取与当前显示信息相邻,且存储位置更靠后的数据作为未显示数据,判断未显示数据的长度是否大于第四预设长度,如果是,则从未显示数据中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的左箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将未显示数据存储到显示数据缓冲区中,点亮显示屏上的左箭头,熄灭显示屏上的右箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0304] 第五判断模块,用于判断时间信息显示标志是否置位;
[0305] 第七处理模块,具体用于在第五判断模块判断出时间信息显示标志复位、第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是左键时,判断显示屏上的左箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;如果被点亮,则从当前交易信息中读取与当前显示信息相邻,且存储位置更靠前的数据作为未显示数据,判断未显示数据的长度是否大于第四预设长度,如果是,则从未显示数据中选取存储位置最靠后的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的右箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将未显示数据存储到显示数据缓冲区中,点亮显示屏上的右箭头,熄灭显示屏上的左箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0306] 相应地,上述第八处理模块,具体用于在第五判断模块判断出时间信息显示标志复位、第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是右键时,判断显示屏上的右箭头是否被点亮,如果没有被点亮,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;如果被点亮,则从当前交易信息中读取与当前显示信息相邻,且存储位置更靠后的数据作为未显示数据,判断未显示数据的长度是否大于第四预设长度,如果是,则从未显示数据中选取存储位置最靠前的、第四预设长度的数据作为当前显示信息,将当前显示信息存储到显示数据缓冲区中,点亮显示屏上的左箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将未显示数据存储到显示数据缓冲区中,点亮显示屏上的左箭头,熄灭显示屏上的右箭头,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0307] 上述动态令牌,还包括:
[0308] 第九处理模块,具体用于在在第四判断模块判断出时间信息显示标志复位、第二处理模块508触发第一判断模块502判断出存在置位的中断标志,且第三判断模块506判断出当前被按下的按键是确认键时,将时间信息显示标志置位,从日志缓冲区中的日志中读取时间信息,将读取到的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0309] 进一步地,上述第二存储子模块,具体用于执行以下操作:
[0310] P1、判断日志条数是否为零,如果是,则将新增日志存储到日志存储区中,将最前日志索引和最后日志索引均设置为新增日志中的索引,更新日志条数;否则,执行步骤P2;
[0311] P2、判断新增日志占用的空间是否大于日志存储区中的剩余空间,如果是,则执行步骤P3;否则,将新增日志存储到日志存储区中,更新日志条数和最后日志索引;
[0312] P3、将日志存储区中最早一次存入的日志删除,将日志存储区中剩余的日志前移,更新日志条数和最前日志索引,并返回步骤P2。
[0313] 上述第二处理模块508,具体用于执行以下操作:
[0314] H1、将当前日志索引设置为最后日志索引,将读取指针设置为日志存储区的首地址;
[0315] H2、根据读取指针,从日志存储区中读取对应的日志,判断读取到的日志中的索引是否与当前日志索引相同,如果是,则将读取到的日志存储到显示数据缓冲区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,执行步骤H3;
[0316] H3、根据读取到的日志占用的空间大小更新读取指针,并返回步骤H2。
[0317] 需要说明的是,在本发明的另一种实施方式中,上述第二存储子模块,具体用于执行以下操作:
[0318] G1、判断新增日志占用的空间是否大于日志存储区中的剩余空间,如果是,则执行步骤G2;否则,执行步骤G4;
[0319] G2、根据最前记录指针,从日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新最前记录指针和日志存储区中的剩余空间;
[0320] G3、根据最前记录指针,从日志存储区中读取对应的日志,将读取到的日志的索引作为最前日志索引,更新日志条数,并返回步骤G1;
[0321] G4、判断日志条数是否为零,如果是,则执行步骤G6;否则,执行步骤G5;
[0322] G5、根据最后记录指针,从日志存储区中读取对应的日志,根据读取到的日志占用的空间,更新最后记录指针,并执行步骤G6;
[0323] G6、将临时计数器的计数值设置为零,将临时指针的取值设置为最后记录指针的取值,将当前日志字节设置为新增日志的首字节;
[0324] G7、判断临时指针的取值是否小于日志存储区的空间大小,如果是,则执行步骤G8;否则,将临时指针的取值置为零,并执行步骤G8;
[0325] G8、将当前日志字节存储到临时指针对应的位置,更新临时指针和临时计数器的计数值,将当前日志字节的下一字节作为更新后的当前日志字节;
[0326] G9、判断临时计数器的计数值是否小于新增日志占用的空间大小,如果是,则返回步骤G7;否则,执行步骤G10;
[0327] G10、将最后日志索引设置为新增日志的索引,更新日志条数,并根据新增日志占用的空间大小,更新日志存储区中的剩余空间。
[0328] 其中,上述第二处理模块508根据当前日志索引从日志存储区中读取对应的日志,具体为,第二处理模块508执行以下操作:
[0329] K1、将当前日志索引设置为最后日志索引,将临时指针的取值设置为最前记录指针的取值;
[0330] K2、根据临时指针,从日志存储区中读取对应的索引,获取与索引对应的日志所占用的空间大小,判断索引是否与当前日志索引相同,如果是,则执行步骤K4;否则,执行步骤K3;
[0331] K3、根据日志所占用的空间大小更新临时指针,判断临时指针的取值是否小于日志存储区的空间大小,如果是,则返回步骤K2;否则,根据日志存储区的空间大小更新临时指针,并返回步骤K2;
[0332] K4、将临时计数器的计数值设置为日志所占用的空间大小;
[0333] K5、根据临时指针,从日志存储区中读取一个字节的数据,并更新临时指针和临时计数器的计数值;
[0334] K6、判断临时指针的取值是否小于日志存储区的空间大小,如果是,则执行步骤K7;否则,根据日志存储区的空间大小更新临时指针,并执行步骤K7;
[0335] K7、判断临时计数器的计数值是否大于零,如果是,则返回步骤K5;否则,将读取到的数据存储到日志缓冲区中,将读取到的日志中的时间信息存储到显示数据缓冲区中,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0336] 进一步地,上述动态令牌,还包括:
[0337] 第二获取模块,用于在第一获取模块505获取到第一键值之后,获取按键时长;
[0338] 第六判断模块,用于在第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合之后,判断第二获取模块获取到的按键时长是否小于第一预设时长;
[0339] 第十处理模块,用于在第六判断模块判断出按键时长小于第一预设时长时,根据当前被按下的按键执行相应的操作,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0340] 第二处理模块508,具体用于在第六判断模块判断出按键时长不小于第一预设时长时,从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0341] 其中,上述第一预设时长为第一预设值和第二预设值之间的差值与第三预设时长的乘积;
[0342] 相应地,上述复位模块504,还用于在第二判断模块503判断出置位的中断标志为按键中断标志时,将长按键标志复位;
[0343] 上述第二获取模块,具体用于在第一获取模块505获取到第一键值之后,执行以下操作:
[0344] S9、延时第二预设时长,保存第一键值,扫描键盘,获取第二键值;
[0345] S10、判断第二键值是否与第一键值相同,如果是,则执行步骤S11;否则,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0346] S11、将定时器的溢出时间设置为第三预设时长,将溢出次数设置为第一预设值;
[0347] S12、开启总中断和定时器的计时功能,将时钟源切换至低速时钟,进入休眠模式;
[0348] S13、被唤醒后,关闭定时器的计时功能,将时钟源切换至高速时钟;
[0349] S14、判断定时器中断标志是否被置位,如果是,则执行步骤S15;否则,返回步骤S12;
[0350] S15、判断关闭总中断,将定时器中断标志复位;
[0351] S16、扫描键盘,获取第三键值,判断第三键值是否与第一键值相同,如果是,则执行步骤S17;否则,开启按键中断和总中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0352] S17、对溢出次数进行更新,判断溢出次数是否为第二预设值,如果是,则将长按键标志置位;否则,返回步骤S12;
[0353] 第六判断模块,具体用于在第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合后,判断长按键标志是否置位,如果是,则确定按键时长不小于第一预设时长;否则,确定按键时长小于第一预设时长。
[0354] 进一步地,上述动态令牌,还包括:
[0355] 第七判断模块,用于对系统状态进行判断;
[0356] 第十一处理模块,用于在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态不是关机状态时,将系统状态设置为关机状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态是关机状态时,更新系统状态;
[0357] 上述第二处理模块508,包括:
[0358] 更新子模块,用于在第七判断模块判断出系统状态为关机状态,且第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,更新系统状态;
[0359] 处理子模块,用于在第七判断模块判断出系统状态为关机状态,且第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0360] 其中,上述第十一处理模块更新系统状态,具体为:
[0361] 第十一处理模块将系统状态设置为验证令牌PIN状态;
[0362] 上述动态令牌,还包括:
[0363] 第十二处理模块,用于在第七判断模块判断出系统状态为验证令牌PIN状态,且第三判断模块506判断出当前被按下的按键是数字键时,执行以下操作:
[0364] B2、将第一键值保存到按键数据缓冲区中,更新按键数据长度;
[0365] B3、判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,执行步骤B4;
[0366] B4、判断按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤B5;否则,执行步骤B6;
[0367] B5、清空按键数据缓冲区,将令牌验证错误次数清零,将系统状态设置为令牌界面状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0368] B6、清空按键数据缓冲区,对令牌验证错误次数进行更新;
[0369] B7、判断令牌验证错误次数是否为第一预设次数,如果是,则执行步骤B8;否则,执行步骤B9;
[0370] B8、将系统状态设置为显示解锁挑战码状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0371] B9、将系统状态设置为PIN错误状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0372] 第十三处理模块,用于在第七判断模块判断出系统状态为验证令牌PIN状态,且第三判断模块506判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0373] 否则,将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0374] 具体地,上述更新子模块,具体用于在第七判断模块判断出系统状态为关机状态,且第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,将系统状态设置为验证日志PIN状态;
[0375] 相应地,上述动态令牌,还包括:
[0376] 第十四处理模块,用于在第七判断模块判断出系统状态为验证日志PIN状态,且第三判断模块506判断出当前被按下的按键是数字键时,执行以下操作:
[0377] C2、将第一键值保存到按键数据缓冲区中,更新按键数据长度;
[0378] C3、判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,执行步骤C4;
[0379] C4、判断按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤C5;否则,执行步骤C6;
[0380] C5、清空按键数据缓冲区,将日志验证错误次数清零,将系统状态设置为日志显示状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0381] C6、清空按键数据缓冲区,对日志验证错误次数进行更新;
[0382] C7、判断日志验证错误次数是否为第二预设次数,如果是,则执行步骤C8;否则,执行步骤C9;
[0383] C8、将系统状态设置为显示解锁挑战码状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0384] C9、将系统状态设置为PIN错误状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0385] 第十五处理模块,用于在第七判断模块判断出系统状态为验证日志PIN状态,且第三判断模块506判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0386] 进一步地,上述动态令牌,还包括:
[0387] 标志位管理模块,用于在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态不是关机状态时,将日志开机标志复位;在第七判断模块判断出系统状态为关机状态,且第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,将日志开机标志置位;
[0388] 第十六处理模块,用于在第三判断模块506判断出当前被按下的按键不是电源键,且第七判断模块判断出系统状态为PIN错误状态时,判断日志开机标志是否置位,如果是,则将系统状态设置为验证日志PIN状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将系统状态设置为验证令牌PIN状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0389] 具体地,上述第十一处理模块,具体用于在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态不是关机状态时,将系统状态设置为关机状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态是关机状态时,判断令牌锁定标志是否置位,如果是,则将系统状态设置为显示解锁挑战码状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将系统状态设置为验证令牌PIN状态;
[0390] 上述更新子模块,具体用于在第七判断模块判断出系统状态为关机状态,且第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合时,判断日志锁定标志是否置位,如果是,则将系统状态设置为显示解锁挑战码状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将系统状态设置为验证日志PIN状态;
[0391] 上述第十二处理模块,还用于在判断出令牌验证错误次数为第一预设次数之后,将令牌锁定标志置位;
[0392] 上述第十四处理模块,还用于在判断出日志验证错误次数为第二预设次数之后,将令牌锁定标志置位;
[0393] 上述动态令牌,还包括:
[0394] 第十七处理模块,用于在第七判断模块判断出系统状态为显示解锁挑战码状态,且第三判断模块506判断出当前被按下的按键不是电源键时,生成解锁挑战码,将系统状态设置为等待输入解锁码状态,显示解锁挑战码,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0395] 第十八处理模块,用于在第七判断模块判断出系统状态为等待输入解锁码状态,且第三判断模块506判断出当前被按下的按键是数字键时,执行以下操作:
[0396] D2、将第一键值保存到按键数据缓冲区中,更新按键数据长度,判断按键数据长度是否小于第二预设长度,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,执行步骤D3;
[0397] D3、根据解锁挑战码,对按键数据缓冲区中的数据进行验证,如果验证通过,则执行步骤D4;否则,执行步骤D5;
[0398] D4、清空按键数据缓冲区,将令牌锁定标志和日志锁定标志复位,将系统状态设置为第一设置PIN状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0399] D5、清空按键数据缓冲区,将系统状态设置为关机状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0400] 第十九处理模块,用于在第七判断模块判断出系统状态为等待输入解锁码状态,且第三判断模块506判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0401] 具体地,上述第十一处理模块,具体用于在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态不是关机状态时,将系统状态设置为关机状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;在第三判断模块506判断出当前被按下的按键是电源键,且第七判断模块判断出系统状态是关机状态时,判断密码设置标志是否置位,如果是,则将系统状态设置为验证令牌PIN状态;否则,将系统状态设置为第一设置PIN状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0402] 相应地,上述动态令牌,还包括:
[0403] 第二十处理模块,用于在第七判断模块判断出系统状态为第一设置PIN状态,且第三判断模块506判断出当前被按下的按键是数字键时,将第一键值保存到按键数据缓冲区中,更新按键数据长度,判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将按键数据缓冲区中的数据存储到密码数据缓冲区中,清空按键数据缓冲区,将系统状态设置为第二设置PIN状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0404] 第二十一处理模块,用于在第七判断模块判断出系统状态为第一设置PIN状态,且第三判断模块506判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0405] 第二十二处理模块,用于在第七判断模块判断出系统状态为第二设置PIN状态,且第三判断模块506判断出当前被按下的按键是数字键时,执行以下操作:
[0406] F2、将第一键值保存到按键数据缓冲区中,更新按键数据长度,判断按键数据长度是否小于第一预设长度,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,执行步骤F3;
[0407] F3、判断按键数据缓冲区中的数据是否与密码数据缓冲区中的数据相同,如果是,则执行步骤F5;否则,执行步骤F4;
[0408] F4、清空按键数据缓冲区和密码数据缓冲区,将系统状态设置为PIN设置错误状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0409] F5、判断日志开机标志是否置位,如果是,则执行步骤F6;否则,执行步骤F7;
[0410] F6、将密码设置标志置位,清空按键数据缓冲区,将系统状态设置为日志显示状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0411] F7、将密码设置标志置位,清空按键数据缓冲区,将系统状态设置为令牌界面状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0412] 第二十三处理模块,用于在第七判断模块判断出系统状态为第二设置PIN状态,且第三判断模块506判断出当前被按下的按键是删除键时,判断按键数据长度是否为零,如果是,则开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;否则,将按键数据缓冲区中最后一次存入的数据删除,更新按键数据长度,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0413] 第二十四处理模块,用于在第三判断模块506判断出当前被按下的按键不是电源键,且第七判断模块判断出系统状态为PIN设置错误状态时,将系统状态设置为第一设置PIN状态,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0414] 第一处理模块507,具体用于在第三判断模块506判断出当前被按下的按键是第一按键,且第七判断模块判断出系统状态为令牌界面状态时,生成动态口令以及与动态口令对应的日志,将动态口令存储到显示数据缓冲区,将所述日志存储到日志存储区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志;
[0415] 第二处理模块508,具体用于在第三判断模块506判断出当前被按下的按键是第二按键,或者是第三按键和第四按键的组合,且第七判断模块判断出系统状态为日志显示状态时,从日志存储区中读取日志,将读取到的日志存储到显示数据缓冲区,开启按键中断,并触发第一判断模块502判断是否存在置位的中断标志。
[0416] 本发明实施例中的动态令牌在生成动态口令后,生成并记录与该动态口令对应的日志供用户查看,从而记录与已完成的身份认证相关的信息,使得用户能够复核已完成的身份认证是否为由自身完成的身份认证,提高了使用动态口令的身份认证机制以及动态令牌的安全性。
[0417] 结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0418] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。