一种在嵌入式系统中生成动态口令的方法及装置的利记博彩app

文档序号:6370930阅读:245来源:国知局
专利名称:一种在嵌入式系统中生成动态口令的方法及装置的利记博彩app
技术领域
本发明涉及身份认证领域,尤其涉及一种在嵌入式系统中生成动态口令的方法与
装置。
背景技术
现有技术中,动态口令每生成一次都要求对动态因子做一次运算,而由动态因子得到动态口令的运算为较复杂运算,倘若需要动态口令频繁生成,则其运算费时且对硬件损耗较大,尤其对于常显的动态令牌,每隔固定时间计算一次动态口令,如何降低动态口令生成时间及硬件损耗亟待解决的问题。

发明内容
本发明目的是解决目前现有技术中动态口令频繁生成对硬件损耗较大且耗时较长的问题,根据本发明的一方面,提供了一种在嵌入式系统中生成动态口令的方法,包括步骤SI =CPU检测到生成动态口令的预设条件;步骤S2 :根据计时器得到当前动态值;步骤S3 :根据所述当前动态值和/或第一预设值生成寻址指针的值,并根据所述当前动态值或所述寻址指针的值判断是否需要生成固定长度的数据串,是则执行步骤S4,否则执行步骤S6 ;步骤S4:生成当前动态因子,调用预置在第一存储器中的静态因子,对所述当前动态因子及所述静态因子进行处理生成固定长度数据串,并用所述固定长度数据串更新第一缓存区中的数据;步骤S5 :根据所述第一预设值对所述第一缓存区中的数据进行分段;步骤S6 :根据所述寻址指针的值,在分段的所述第一缓存区中查找相应的数据段,并将查找到的数据段的值作为动态口令输出。其中,所述计时器为定时触发器,每隔预设时间触发一次;所述预设条件为所述定时触发器触发信号。或者,所述计时器设有最大值及溢标志位,所述预设条件为所述计时器的溢出标志位置位;所述步骤Si中检测到所述预设条件后还包括将所述计时器的溢出标志位复位。或者,所述预设条件为所述计时器计时达到预设时间,所述步骤SI中所述CPU检测到所述预设条件后还包括将所述计时器清零,重新开始计时。进一步地,所述步骤S2中所述根据计时器得到当前动态值具体为所述计时器满足所述预设条件后,计数器计数一次,所述CPU获取所述计数器的计数值得到所述当前动态值。其中,所述计数器为从0到所述第一预设值的循环计数器,获取到的所述当前动态值即所述寻址指针的值,所述步骤S3中判断是否生成固定长度的数据串具体为所述CPU判断所述计数器的计数值或所述寻址指针的值是否为O,是则需要生成所述固定长度数据串,否则不需要。进一步地,当所述CPU判断需要生成固定长度数据串时,所述步骤S4中生成所述当前动态因子具体为将第二缓存区中的数据自增一个第二预设值得到所述当前动态因子,并用所述当前动态因子更新第二缓存区;所述步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为将所述第一缓存区中的数据进行等长分段,所分段数大于或等于所述第一预设值加I的值。进一步地,所述步骤S3具体为所述CPU用所述当前动态值对所述第一预设值进行取模运算,得到所述寻址指针的值,并赋值给寻址指针;判断所述寻址指针的值是否为0,是则需要生成固定长度的数据串,否则不需要生成固定长度的数据串。 进一步地,当所述CPU判断需要生产固定长度数据串时,所述步骤S4中生成所述当前动态因子具体为获取当前动态值将其作为当前动态因子;所述步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为将所述第一缓存区中的数据进行等长分段,所分段数大于或等于所述第一预设值。其中,所述计数器设有初始值,所述CPU将计数器的初始值存储于第二存储器,所述步骤S3具体为所述CPU根据所述第一预设值,分别获取所述当前动态值与所述计数器初始值的低位端相应比特位数的数据,用得到的当前动态值的低位端数据减所述计数器初始值的低位端数据得到所述寻址指针的值,并将所述寻址指针的值赋值给寻址指针;判断所述寻址指针的值是否为0,是则需要生成固定长度的数据串,否则不需要生成固定长度的数据串。进一步地,当所述CPU判断需要生产固定长度数据串时,所述步骤S4中生成当前动态因子具体为获取当前动态值并将其作为当前动态因子;步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为所述CPU对所述第一缓存区的数据进行等长分段,所分段数大于或等于第三预设值,所述第三预设值为以2为底数、以所述第一预设值为幂数的计算结果。其中,所述步骤SI具体为所述CPU接收到按键触发生成动态口令生成指令。进一步地,所述步骤S2中根据计时器生成所述当前动态值具体为所述CPU获取计时器所计时间,并根据预设时间对所述当前动态值进行处理,得到当前动态值。进一步地,所述步骤S3具体包括所述CPU用得到的当前动态值对所述第一预设值进行取模运算,得到寻址指针的值,并赋值给寻址指针;判断当前动态值与所述寻址指针的值的差值与第二缓存区中存储的数据是否一致,是则不需要生成固定长度的数据串,否则需要生成。进一步地,当所述CPU判断需要生成固定长度的数据串时,所述步骤S4中的生成当前动态因子具体为用当前动态值减去寻址指针的值得到当前动态因子,所述步骤S4之后还包括所述CPU用所述当前动态因子更新所述第二缓存区中的数据;所述步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为将所述第一缓存区中的数据进行等长分段,所分段数大于或等于所述第一预设值。其中,所述静态因子为密钥,所述步骤S4中对当前动态因子及所述静态因子进行处理生成固定长度数据串具体包括步骤a:所述CPU将当前动态因子及所述静态因子组合,根据组合得到的数据的比特位数对组合得到的数据进行填充,得到原始数据,并将所述原始数据缓存在第三缓存区;步骤b 对一组字寄存器设置初始值;步骤c :按照512个比特位对所述第三缓存区中的数据按进行分段,并将偏移指针初始位置指向第一段数据;
步骤d:根据所述原始数据的当前段数据进行消息扩展,生成一组字数据;步骤e :所述CPU对所述一组字寄存器中当前数据及所述一组字数据进行处理,并用处理结果更新所述一组字寄存器中的数据;步骤f :判断所述原始数据的当前段数据是否为最后一段数据,是则执行步骤g,否则将偏移指针右移指向原始数据的下一段数据,返回步骤d ;步骤g :获取所述一组字寄存器存储的数据,得到所述固定长度数据串。
其中,所述根据组合得到的数据的比特位数对组合得到的数据进行填充,具体包括用所述组合得到数据的比特位数作为填充数据,填充得到的所述原始数据的比特位数为512的整数倍。其中,所述一组字寄存器可以为5个或8个字寄存器;当所述一组字寄存器为5个时,所述步骤d中生成的所述一组字为79个字数据;当所述一组字寄存器为8个时,所述步骤d中生成的所述一组字为132个字数据。进一步地,所述步骤d具体包括
将所述原始数据的当前段数据每32位划分为一个字数据,得到16个字数据,顺序对已得到的字数据进行异或和/或与运算和/或模加运算和/或移位得到所述一组字。其中,所述步骤e中CPU对所述一组字寄存器中当前数据及所述一组字进行处理具体为对所述一组字数据中不同字数据及所述一组字寄存器中不同寄存器中的数据进行异或运算、与运算、模加运算、移位操作,并不断用操作结果更新所述一组字寄存器中的数据,直到历遍所述一组字中所有的字。根据本发明的另一方面,提供了又一种在嵌入式系统中生成动态口令的方法,包括A =CPU检测到生成动态口令的预设条件;B :所述CPU判断预设分段的第一缓存区中是否存在数据,是则执行步骤D,否则执行步骤C ;C :所述CPU根据第二缓存区中的数据生成当前动态因子,并用当前动态因子更新所述第二缓存区中的数据,调用存储器中的静态因子,并根据所述当前动态因子及所述静态因子生成固定长度数据串,并用所述固定长度数据串更新所述第一缓存区中的数据;D :所述CPU根据预设方式在预设分段的所述第一缓存区中查找到待输出的数据段,并将所述待输出的数据段作为动态口令输出,同时清除所述待输出的数据段。其中,所述生成动态口令的预设条件为定时触发器每隔预设时间触发的生成动态口令信号或按键触发生成的动态口令生成指令。所述步骤C中所述生成当前动态因子具体为所述CPU将所述第二缓存区中的数据增加第二预设值,得到当前动态因子;或,所述CPU获取计时器计时时间得到所述当前动态因子。其中,所述CPU检测到生成动态口令的预设条件之后还包括计数器计数一次;所述生成当前动态因子包括所述CPU根据所述计数器的计数值对所述第二缓存区中的数据进行处理,生成所述当前动态因子。进一步地,所述预设分段的第一缓存区所分各存储段等长;所述固定长度数据串长度大于或等于所述第一缓存区。 其中,所述CPU根据预设方式,在预设分段的所述第一缓存区中查找到待输出的数据段,包括所述CPU按预设顺序对所述第一缓存区的各个存储段进行检测,检测到存储有数据的存储段,即将该存储段中的数据作为所述待输出的数据段;所述步骤D中清除所述查找到的数据段具体为所述CPU将查找到的数据段所在的存储段清空。所述CPU根据预设方式,在预设分段的所述第一缓存区中查找到待输出的数据段,包括所述CPU获取所述第一缓存区高位端第一个存储段中的数据得到所述待输出的数据段;所述步骤D中清除所述查找到的数据段具体为所述CPU将所述第一缓存区中的数据左移一个存储段的长度。进一步地,所述CPU根据预设方式,在预设分段的所述第一缓存区中查找到待输出的数据段,包括所述CPU获取所述第一缓存区低位端第一个存储段中的数据得到所述待输出的数据段;所述步骤D中清除所述查找到的数据段具体为所述CPU将所述第一缓存区中的数据右移一个存储段的长度。其中,所述静态因子为密钥;所述生成固定长度数据串,包括步骤a:所述CPU将当前动态因子及所述静态因子组合,根据组合得到的数据的比特位数对组合得到的数据进行填充,得到原始数据,并将所述原始数据缓存在第三缓存区;步骤b 对一组字寄存器设置初始值;步骤c :按照512个比特位对所述第三缓存区中的数据按进行分段,并将偏移指针初始位置指向第一段数据;步骤d:根据所述原始数据的当前段数据进行消息扩展,生成一组字数据;步骤e:所述CPU对所述一组字寄存器中当前数据及所述一组字数据进行处理,并用处理结果更新所述一组字寄存器中的数据;步骤f :判断所述原始数据的当前段数据是否为最后一段数据,是则执行步骤g,否则将偏移指针右移指向原始数据的下一段数据,返回步骤d ;步骤g :获取所述一组字寄存器存储的数据,得到所述固定长度数据串。
其中,所述根据组合得到的数据的比特位数对组合得到的数据进行填充,具体包括用所述组合得到数据的比特位数作为填充数据,填充得到的所述原始数据的比特位数为512的整数倍。所述一组字寄存器可以为5个或8个字寄存器;当所述一组字寄存器为5个时,所述步骤d中生成的所述一组字为79个字数据;当所述一组字寄存器为8个时,所述步骤d中生成的所述一组字为132个字数据。其中所述步骤d具体包括将所述原始数据的当前段数据每32位划分为一个字数据,得到16个字数据,顺序对已得到的字进行异或和/或与运算和/或模加运算和/或移位得到所述一组字数据。
所述步骤中CPU对所述一组字寄存器中当前数据及所述一组字进行处理具体为对一组字中不同字数据及所述一组字寄存器中不同寄存器中的数据进行异或运算、与运算、模加运算、移位操作,并不断用操作结果更新所述一组字寄存器中的数据,直到历遍所述一组字数据中所有的字数据。根据本发明的另一方面,提供了一种在嵌入式系统中生成动态口令的装置,其特征在于包括检测模块用于检测生成动态口令条件;计时模块用于在所述检测模块检测到生成动态口令条件时,根据计时时间生成当前动态值;第一存储模块用于存储第一预设值及静态因子;第一生成模块用于根据当前动态值和/或所述第一存储模块中的第一预设值生成寻址指针的值;第一判断模块用于根据当前动态值、所述第一预设值及所述寻址指针的值判断是否需要生成固定长度的数据串;第二生成模块用于在所述第一判断模块判断需要生成固定长度的数据串时,根据当前动态值、所述第一预设值或所述寻址指针的值生成当前动态因子;并根据当前动态因子及所述第一存储模块存储的所述静态因子生成固定长度数据串;第一缓存模块用于存储所述生成模块生成的所述固定长度数据串;寻址模块用于对所述第一缓存模块中存储的所述固定长度数据串进行划分,并根据所述寻址指针的值寻找相应的数据段;输出模块用于将所述寻找模块根据所述寻址指针的值寻找到的相应的数据段作为动态口令输出。其中,所述计时模块包括计数单元及计时单元,所述计时单元用于计时,并在计时达到预设时间时清零重新开始计时;所述计数单元用于当所述计时单元计时达到所述预设时间时计数一次;所述检测模块检测到所述计时单元计时达到所述预设时间或检测到所述计数单元计数一次时,即检测到所述生成动态口令条件,所述计数单元还用于根据所述计时单元的计时时间生成当前动态值。另外,还包括按键输入模块,所述按键输入模块用于接收按键触发生成动态口令生成指令,当所述检测模块检测到动态口令生成指令即检测到所述生成动态口令预设条件。通过本发明提供的方案,实现一次复杂运算能够得到多组动态口令,在保证动态口令安全的前提下,降低了动态口令频繁生成对硬件的损耗,且降低了生成动态口令的耗时。


图I为本发明实施例I提供的一种在嵌入式系统中生成动态口令的方法流程图;图2为本发明实施例2提供的一种在嵌入式系统中生成动态口令的方法流程图;图3为本发明实施例3提供的一种在嵌入式系统中生成动态口令的方法流程图;图4为本发明实施例4提供的一种在嵌入式系统中生成动态口令的方法流程图; 图5为本发明实施例4提供的一种固定长度数据串的生成方法流程图;图6为本发明实施例5提供的又一种固定长度数据串的生成方法流程图;图7为本发明实施例6提供的一种在嵌入式系统中生成动态口令的装置方框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例I参见图I,本发明实施例I提供了一种在嵌入式系统中生成动态口令的方法,具体如下步骤SI =CPU检测到生成动态口令的预设条件;步骤S2 :根据计时器得到当前动态值;步骤S3 :根据所述当前动态值和/或第一预设值生成寻址指针的值,并根据所述当前动态值或所述寻址指针的值判断是否需要生成固定长度的数据串,是则执行步骤S4,否则执行步骤S6 ;步骤S4:生成当前动态因子,调用预置在第一存储器中的静态因子,对所述当前动态因子及所述静态因子进行处理,生成固定长度数据串,并用所述固定长度数据串更新第一缓存区中的数据;步骤S5 :根据所述第一预设值对所述第一缓存区中的数据进行分段;步骤S6 :根据寻址指针的值,在分段的所述第一缓存区中查找相应的数据段,并将查找到的数据段的值作为动态口令输出。实施例2参见图2,本实施例以动态口令常显为例,提供了一种在嵌入式系统中生成动态口令的方法,具体包括步骤101 :CPU监测计时器,检测到生成动态口令的预设条件;优选地,在本实施例中,所述预设条件可以为计时器计时到达预设时间,同时计数器计数一次,计时器清零并重新计时,所述预设时间可以为30秒、60秒等,CPU将所述计数器设有初始值,且将所述计数器初始值存储于第一存储器。所述计时器还可以替换为定时触发器,每隔所述预设时间触发一次,所述CPU检测到所述计时器的触发信号即检测到所述预设条件。优选地,在本实施例中,所述计时器还可以为设有最大值及溢出标志位的计时器,所述最大值即预设时间。当所述CPU检测到所述定时器的溢出标志位置位即检测到生成动态口令的预设条件,所述CPU检测到所述预设条件后清除所述溢出标志位,同时所述计数器计数一次。步骤102 :根据第一预设值获取所述计数器初始值低位端相应位数上的值得到比较值,获取计数器计数值的低位端相应位数上的的值并验证是否与所述比较值一致,是则执行步骤103,否则执行步骤106 ; 优选地,在本实施例中,所述第一预设值优选为3或2,相应的,所述比较值为所述计数器初始值的低位端3个比特或2个比特的值。步骤103 :CPU获取所述计数器的计数值,得到当前动态因子并用当前动态因子更新第二缓存区中的数据;优选地,在本实施例中,步骤102至步骤103还可以替换为以下步骤步骤102’ :CPU判断所述计数器的值是否达到第一预设值加上I的值,是则将计数器清零,执行步骤103’,否则执行步骤106 ;优选地,在本步骤中,还可以用0至第一预设值的循环计数器替换所述计数器,则步骤102’相应替换为CPU判断循环计数器的值是否为0,是则执行步骤103’,否则执行步骤106。替换后本实施例中所述第一预设值优选为3或7。步骤103’ 更新第二缓存区中的动态因子,得到当前动态因子;优选地,在本实施例中,CPU更新第二缓存区中的动态因子具体为将第二缓存区中的动态因子自加一个第二预设值,得到所述当前动态因子。步骤104 :CPU获取预置在第二存储器中的静态因子,并根据静态因子及当前动态因子生成固定长度的数据串,并用该数据串更新第一缓冲区中的数据;所述静态因子可以为密钥、硬件序列号等,优选地,在本实施例中所述静态因子为密钥。优选地,在本实施例中,CPU被启用前在所述第一缓冲区内预存有固定长度的初始数据。所述固定长度的数据串生成方法可以通过多种方法得出,本实施例中,所述固定长度数据串生成具体过程详见实施例5或实施例6。步骤105 :根据所述第一预设值对所述第一缓存区中的数据进行分段;优选地,在本实施例中,将所述第一缓存区分段得到的段数大于或等于第三预设值,该第三预设值为所述第一预设值作为2的幂数运算得到的值,如,所述第一预设值为2,则至少分为4段;所述第一预设值为3,则至少分为8段。优选地,在本实施例中,划分得到的各数据段等长。若用步骤102’至步骤103’替换所述步骤102至步骤103,则步骤105中CPU对所述第一缓存区数据进行分段的段数大于或等于所述第一预设值加I。步骤106 =CPU将获取到的计数器的计数值的低位端相应位数上的值与所述比较值的差值赋值给寻址指针;
优选地,在本实施例中,若用步骤102’至步骤103’替换所述步骤102至步骤103,则步骤106相应替换为CPU获取所述计数器的计数值并赋值给寻址指针。优选地,在本实施例中所述步骤106的操作在所述步骤102的时候执行,相应地,所述CPU执行步骤105后执行步骤107,所述步骤102的内容替换为根据第一预设值,获取所述计数器初始值低位端相应位数上的值得到比较值,获取计数器的计数值的低位端相应位数上的值,将所述计数器的计数值的低位端相应位数上的值与所述比较值相减得到寻址指针的值并赋值给寻址指针,判断所述寻址指针的值是否为0,是则需要生成固定长度数据串,执行步骤103,否则不需要,执行步骤107。步骤107 :CPU根据寻址指针的值,在所述预设分段的第一缓冲区找到相应的数据段;在本实施例中,所述寻址指针不同的值分别与所述第一缓存区划分得到的数据段中的一段相对应。 步骤108 :获取找到的数据段,并将该数据段数据作为动态口令输出。优选地,在本实施例中,输出的动态口令位数为预设位数,具体为,取十进制表示的所述数据段的低位端预设位数上的数据作为动态口令输出。实施例3参见图3,在本实施例中,以按键触发生成动态口令为例,提供了又一种在嵌入式系统中生成动态口令的方法,具体步骤如下步骤201 :CPU接收动态口令生成指令;步骤202 :CPU获取计时器所计的当前时间,并根据当前时间及预设时间得到当前动态值;优选地,在本实施例中,所述预设时间预置在第一存储空间,所述计时器预设有初始时间,所述当前动态值即从所述初始时间到当前时间经过的所述预设时间的个数,在本实施例中,根据当前时间及预设时间得到所述当前动态值具体为用当前时间值对所述预设时间值进行取模运算,用当前动态值与取模运算结果的差值除以预设时间值即得到当前动态值,本实施例中以所述预设时间为60秒为例。例如当前时间与所述初始时间相差31453203秒,则所述当前动态值则相应地为524220。步骤203 :根据存储在第二存储空间的第一预设值,生成寻址指针的值,并赋值给寻址指针;优选地,在本实施例中,所述第一预设值取8为例,根据所述第一预设值生成所述寻址指针的值方法为用当前动态值对所述第一预设值进行取模运算,得到所述寻址指针的值。例如,当前动态值为524220,则所述寻址指针的值相应为4。步骤204 :根据当前当前动态值及所述寻址指针的值,生成当前动态因子并缓存;优选地,在本实施例中,CPU用所述当前动态值减去所述寻址指针的值得到所述当前动态因子。步骤205 :验证当前动态因子是否与第二缓存区存储的动态因子一致,是则执行步骤207,否则用当前动态因子更新第二缓存区的数据;步骤206 :CPU调用预置在第一存储器中的密钥,根据当前动态因子及密钥生成固定长度的数据串,并用该数据串更新第一缓存区中的数据;
根据当前动态因子及密钥生成固定长度数据串的方式有多种,在本实施例中,生成固定长度数据串的方式详见实施例5或实施例6。步骤207 :CPU根据寻址指针的值,在所述预设分段的第一缓冲区查找相应的数据段;在本实施例中,所述第一缓冲区被划分的段数大于或等于所述第一预设值,划分得到的数据段与所述寻址指针的值一一对应。步骤208 :获取找到的数据段,并将该数据段数据作为动态口令输出。实施例4参见图4,本发明实施例4提供了再一种在嵌入式系统中生成动态口令的方法,具体包括
301 =CPU检测到生成动态口令的预设条件;302:判断预设分段的第一缓存区中是否存在数据,是则执行步骤304,否则执行步骤303 ;优选地,在本实施例中,该步骤可以替换为302’ 判断预设分段的第一缓存区中的第一存储段是否存在数据,是则执行304,否则执行303。所述第一存储段可以为第一缓存区高位端第一段,也可以为低位端第一段。303:生成当前动态因子,调用存储器中的静态因子,并根据所述当前动态因子及所述密钥生成固定长度数据串,并将所述固定长度数据串缓存在预设分段的第一缓存区;所述静态因子可以为密钥、硬件序列号等,优选地,在本实施例中以所述静态因子为密钥为例。优选地,在本实施例中,所述第一缓存的长度大于或等于所述固定长度数据串的长度,所述第一缓存区所分的各存储段长度相等。该步骤中,生成当前动态因子可以为根据计时器计时时间得到;也可以为将第二缓存区中的数据自增第二预设值得到,同时用当前动态因子更新第二缓存区中数据;还可以为所述CPU每检测到生成动态口令的预设条件均将计数器计数一次,生成当前动态因子为根据计数器的计数值及所述第二缓存区中的数据得到,如所述第二缓存区中的数据自增所述计数值得到当前动态因子。304 :CPU在所述第一缓存区中找到相应的数据段,作为动态口令输出;具体地,在本实施例中,该步骤中CPU找到相应数据段具体为CPU按预设顺序在所述第一缓存区中查找存在数据的存储段,找到存在数据的存储段时,将该存储段中的数据作为找到的数据段作为动态口令输出,同时清空存储该存储段的缓存区;相应地,在本实施例中,当所述步骤S2替换为步骤S2’时,则步骤S4具体为获取所述第一缓存区高位端第一存储段中数据即得到所述相应的数据段,将该数据段作为动态口令输出,同时第一缓存区中的数据左移一个存储段的长度。所述获取第一缓存区高位端第一存储段中数据也可以替换为获取第一缓存区低位端第一存储段中数据,相应地,输出动态口令后,第一缓存区中的数据右移一个存储段的长度。实施例5参见图5,本发明实施例5提供了一种生成固定长度数据串的方法,CPU生成固定长度数据串过程具体为
步骤401 :CPU将当前动态因子及静态因子组合,根据组合得到的数据的比特位数对组合得到数据进行填充得到原始数据,并将所述原始数据缓存在第三缓存区;具体地,在本实施例中,填充得到的原始数据的比特位数为512的倍数,其中填充比特位数大于等于I位且小于512,填充所用数据可以为预置数据和/或组合数据的的比特位数等。步骤402 =CPU对第一至第八字寄存器设初始值;在本实施例中,每个字寄存器为32比特,第一至第八字寄存器设置的初始值分贝为 0x7380166F 4914B2B9 172442D7 DA8A0600 A96F30BC 163138AA E38DEE4D B0FB0E4E ;步骤403 :从第三缓存区高位到低位将原始数据中以512个比特位为单元进行划分,并将偏移指针初始位置指向原始数据左端第一段数据;
步骤404 :根据原始数据的当前段数据进行消息扩展,生成132个字数据;生成132个字数据具体为将当前段数据每32位为一个字划分得到第I个至第16个字数据,根据得到字进行异或、与、模加、循环移位等变换得到后续116个字数据。步骤405 :CPU执行压缩函数,对第一至第八寄存器中的数据及根据原始数据的当前段生成的132个字数据进行处理,并用处理结果更新第一至第八字寄存器的值;步骤406:判断原始数据的当前段数据是否为最后一段数据,是则执行步骤407,否则将偏移指针右移指向原始数据的下一段数据,返回步骤404 ;步骤407 :将第一至第八字寄存器中的值顺序存入预设分段的缓冲区,得到固定长度数据串。实施例6参见图6,本发明实施例6提供了又一种生成固定长度数据串的方法,具体包括步骤501 :CPU将动态因子及密钥组合,根据组合得到的数据的比特位数对组合得到数据进行填充得到原始数据,并将原始数据缓存在第三缓存区;具体地,在本实施例中,填充得到的原始数据的比特位数为512的倍数,其中填充比特位数大于等于I位且小于512,填充所用数据可以为预置数据和/或组合数据的的比特位数或字节数等。步骤502 =CPU对第一至第五字寄存器设初始值;在本实施例中,每个字寄存器为32比特,第一至第五字寄存器设置的初始值分别为 Ox 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0 ;步骤503 :从第三缓存区高位到低位将原始数据以512个比特位为单位进行划分,并将偏移指针初始位置指向原始数据左端第一段数据;步骤504 :根据原始数据的当前段数据进行消息扩展,生成80个字数据;优选地,在本实施例中根据当前段数据进行消息扩展生成80个字数据具体为将当前段数据每32位为一个字划分得到第I个至第16个字数据,根据得到字进行异或、与、模加、循环移位等变换得到后第17个字数据,以此方式根据已得到的字数据进行处理得到后续的字数据。步骤505 :CPU执行压缩函数,对第一至第八寄存器中的数据及根据原始数据当前段生成的80个字数据进行处理,并用处理结果更新第一至第五字寄存器的值;步骤506:判断原始数据的当前段数据是否为最后一段数据,是则执行步骤507,否则将偏移指针右移指向原始数据的下一段数据,返回步骤504 ;步骤507 :将第一至第五字寄存器中的值顺序存入预设分段的缓冲区,得到固定长度数据串。实施例7参见图7,本发明实施例7提供了一种在嵌入式系统中生成动态口令的装置,包括检测模块601 :用于检测生成动态口令条件;计时模块602 :用于在所述检测模块601检测到生成动态口令条件时,根据计时时间生成当前动态值;所述计时模块602包括计时单元6021、计数单元6022, 所述计时单元6021,用于计时,并在计时达到预设时间时清零重新开始计时;所述计数单元6022,用于当所述计时单元6021计时达到所述预设时间时计数一次;当检测模块601检测到所述生成动态口令条件,计数单元6022还用于根据计时单元6021的计时时间生成当前动态值;第一存储模块603 :用于存储第一预设值及静态因子;第一生成模块604 :用于根据当前动态值及所述第一存储模块603中的第一预设值生成寻址指针的值;第一判断模块605:用于根据当前动态值、所述第一预设值及所述寻址指针的值判断是否需要生成固定长度的数据串;第二生成模块606 :用于在所述第一判断模块605判断需要生成固定长度的数据串时,根据当前动态值、所述第一预设值或所述寻址指针的值生成当前动态因子;获取所述第一存储模块603中的静态因子,并根据当前动态因子及所述所述静态因子生成固定长度数据串;第一缓存模块607 :用于存储所述生成模块606生成的所述固定长度数据串;寻址模块608 :用于对所述第一缓存模块608中存储的所述固定长度数据串进行划分,并根据所述寻址指针的值寻找相应的数据段;输出模块609 :用于将所述寻找模块608根据所述寻址指针的值寻找到的相应的数据段作为动态口令输出。优选地,在本实施例中所述装载还可以包括按键模块610,用于接收按键触发生成的动态口令生成指令,当所述检测模块检601测到动态口令生成指令即检测到所述生成动态口令预设条件。
权利要求
1.一种在嵌入式系统中生成动态口令的方法,其特征在于,包括 步骤SI :CPU检测到生成动态口令的预设条件; 步骤S2 :根据计时器得到当前动态值; 步骤S3 :根据所述当前动态值和/或第一预设值生成寻址指针的值,并根据所述当前动态值或所述寻址指针的值判断是否需要生成固定长度的数据串,是则执行步骤S4,否则执行步骤S6 ; 步骤S4:生成当前动态因子,调用预置在第一存储器中的静态因子,对所述当前动态因子及所述静态因子进行处理生成固定长度数据串,并用所述固定长度数据串更新第一缓存区中的数据; 步骤S5 :根据所述第一预设值对所述第一缓存区中的数据进行分段; 步骤S6 :根据所述寻址指针的值,在分段的所述第一缓存区中查找相应 的数据段,并将查找到的数据段的值作为动态口令输出。
2.>如权利要求I所述的方法,其特征在于,所述计时器为定时触发器,每隔预设时间触发一次; 所述预设条件为所述定时触发器触发信号。
3.如权利要求I所述的方法,其特征在于,所述计时器设有最大值及溢标志位,所述预设条件为所述计时器的溢出标志位置位;所述步骤SI中检测到所述预设条件后还包括将所述计时器的溢出标志位复位。
4.如权利要求I所述的方法,其特征在于,所述预设条件为所述计时器计时达到预设时间,所述步骤SI中所述CPU检测到所述预设条件后还包括将所述计时器清零,重新开始计时。
5.如权利要求2或3或4所述的方法,其特征在于, 所述步骤S2中所述根据计时器得到当前动态值具体为所述计时器满足所述预设条件后,计数器计数一次,所述CPU获取所述计数器的计数值得到所述当前动态值。
6.如权利要求5所述的方法,其特征在于,所述计数器为从O到所述第一预设值的循环计数器,获取到的所述当前动态值即所述寻址指针的值,所述步骤S3中判断是否生成固定长度的数据串具体为 所述CPU判断所述计数器的计数值或所述寻址指针的值是否为O,是则需要生成所述固定长度数据串,否则不需要。
7.如权利要求6所述的方法,其特征在于,当所述CPU判断需要生成固定长度数据串时,所述步骤S4中生成所述当前动态因子具体为将第二缓存区中的数据自增第二预设值得到所述当前动态因子,并用所述当前动态因子更新第二缓存区; 所述步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为将所述第一缓存区中的数据进行等长分段,所分段数大于或等于所述第一预设值加I的值。
8.如权利要求5所述的方法,其特征在于,所述步骤S3具体为 所述CPU用所述当前动态值对所述第一预设值进行取模运算,得到所述寻址指针的值,并赋值给寻址指针; 判断所述寻址指针的值是否为O,是则需要生成固定长度的数据串,否则不需要生成固定长度的数据串。
9.如权利要求8所述的方法,其特征在于,当所述CPU判断需要生产固定长度数据串时,所述步骤S4中生成所述当前动态因子具体为获取当前动态值将其作为当前动态因子; 所述步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分 段具体为将所述第一缓存区中的数据进行等长分段,所分段数大于或等于所述第一预设值。
10.如权利要求5所述的方法,其特征在于,所述计数器设有初始值,所述CPU将计数器的初始值存储于第二存储器,所述步骤S3具体为 所述CPU根据所述第一预设值,分别获取所述当前动态值与所述计数器初始值的低位端相应比特位数的数据,用得到的当前动态值的低位端数据减所述计数器初始值的低位端数据得到所述寻址指针的值,并将所述寻址指针的值赋值给寻址指针; 判断所述寻址指针的值是否为0,是则需要生成固定长度的数据串,否则不需要生成固定长度的数据串。
11.如权利要求10所述的方法,其特征在于,当所述CPU判断需要生产固定长度数据串时,所述步骤S4中生成当前动态因子具体为获取当前动态值并将其作为当前动态因子; 步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为所述CPU对所述第一缓存区的数据进行等长分段,所分段数大于或等于第三预设值,所述第三预设值为以2为底数、以所述第一预设值为幂数的计算结果。
12.如权利要求I所述的方法,其特征在于,所述步骤SI具体为所述CPU接收到按键触发生成动态口令生成指令。
13.如权利要求12所述的方法,其特征在于,所述步骤S2中根据计时器生成所述当前动态值具体为所述CPU获取计时器所计时间,并根据预设时间对所述当前动态值进行处理,得到当前动态值。
14.如权利要求13所述的方法,其特征在于,所述步骤S3具体包括 所述CPU用得到的当前动态值对所述第一预设值进行取模运算,得到寻址指针的值,并赋值给寻址指针; 判断当前动态值与所述寻址指针的值的差值与第二缓存区中存储的数据是否一致,是则不需要生成固定长度的数据串,否则需要生成。
15.如权利要求14所述的方法,其特征在于,当所述CPU判断需要生成固定长度的数据串时,所述步骤S4中的生成当前动态因子具体为用当前动态值减去寻址指针的值得到当前动态因子,所述步骤S4之后还包括所述CPU用所述当前动态因子更新所述第二缓存区中的数据; 所述步骤S5中根据所述第一预设值对所述第一缓存区中的数据进行分段具体为将所述第一缓存区中的数据进行等长分段,所分段数大于或等于所述第一预设值。
16.根据权利要求I所述的方法,其特征在于,所述静态因子为密钥,所述步骤S4中对当前动态因子及所述静态因子进行处理生成固定长度数据串具体包括 步骤a:所述CPU将当前动态因子及所述静态因子组合,根据组合得到的数据的比特位数对组合得到的数据进行填充,得到原始数据,并将所述原始数据缓存在第三缓存区; 步骤b:对一组字寄存器设置初始值;步骤C :按照512个比特位对所述第三缓存区中的数据按进行分段,并将偏移指针初始位置指向第一段数据; 步骤d:根据所述原始数据的当前段数据进行消息扩展,生成一组字数据; 步骤e :所述CPU对所述一组字寄存器中当前数据及所述一组字数据进行处理,并用处理结果更新所述一组字 寄存器中的数据; 步骤f :判断所述原始数据的当前段数据是否为最后一段数据,是则执行步骤g,否则将偏移指针右移指向原始数据的下一段数据,返回步骤d ; 步骤g:获取所述一组字寄存器存储的数据,得到所述固定长度数据串。
17.如权利要求16所述的方法,其特征在于,所述根据组合得到的数据的比特位数对 组合得到的数据进行填充,具体包括用所述组合得到数据的比特位数作为填充数据,填充得到的所述原始数据的比特位数为512的整数倍。
18.如权利要求17所述的方法,其特征在于,所述一组字寄存器可以为5个或8个字寄存器; 当所述一组字寄存器为5个时,所述步骤d中生成的所述一组字为79个字数据; 当所述一组字寄存器为8个时,所述步骤d中生成的所述一组字为132个字数据。
19.如权利要求18所述的方法,其特征在于,所述步骤d具体包括 将所述原始数据的当前段数据每32位划分为一个字数据,得到16个字数据,顺序对已得到的字数据进行异或和/或与运算和/或模加运算和/或移位得到所述一组字。
20.如权利要求19所述的方法,其特征在于,所述步骤e中CPU对所述一组字寄存器中当前数据及所述一组字进行处理具体为对所述一组字数据中不同字数据及所述一组字寄存器中不同寄存器中的数据进行异或运算、与运算、模加运算、移位操作,并不断用操作结 果更新所述一组字寄存器中的数据,直到历遍所述一组字中所有的字。
21.—种在嵌入式系统中生成动态口令的方法,其特征在于,包括 A =CPU检测到生成动态口令的预设条件; B :所述CPU判断预设分段的第一缓存区中是否存在数据,是则执行步骤D,否则执行步骤C ; C :生成当前动态因子,并用当前动态因子更新所述第二缓存区中的数据,调用存储器中的静态因子,并根据所述当前动态因子及所述静态因子生成固定长度数据串,并用所述固定长度数据串更新所述第一缓存区中的数据; D :所述CPU根据预设方式在预设分段的所述第一缓存区中查找到待输出的数据段,并将所述待输出的数据段作为动态口令输出,同时清除所述待输出的数据段。
22.如权利要求21所述的方法,其特征在于,所述生成动态口令的预设条件为定时触发器每隔预设时间触发的生成动态口令信号或按键触发生成的动态口令生成指令。
23.如权利要求22所述的方法,其特征在于,所述步骤C中所述生成当前动态因子具体为所述CPU将所述第二缓存区中的数据增加一个第二预设值,得到当前动态因子; 或者,所述CPU获取计时器计时时间,得到所述当前动态因子。
24.如权利要求22所述的方法,其特征在于,所述CPU检测到生成动态口令的预设条件之后还包括计数器计数一次; 所述步骤C中所述成当前动态因子包括所述CPU根据所述计数器的计数值对所述第二缓存区中的数据进行处理,生成所述当前动态因子。
25.如权利要求23或24所述的方法,其特征在于,所述预设分段的第一缓存区所分各存储段等长; 所述固定长度数据串长度大于或等于所述第一缓存区。
26.如权利要求25所述的方法,其特征在于,所述CPU根据预设方式,在预设分段的所述第一缓存区中查找到待输出的数据段,包括所述CPU按预设顺序对所述第一缓存区的各个存储段进行检测,检测到存储有数据的存储段,即将该存储段中的数据作为所述待输出的数据段; 所述步骤D中清除所述查找到的数据段具体为所述CPU将查找到的数据段所在的存储段清空。
27.如权利要求25所述的方法,其特征在于,所述CPU根据预设方式,在预设分段的所述第一缓存区中查找到待输出的数据段,包括 所述CPU获取所述第一缓存区高位端第一个存储段中的数据得到所述待输出的数据段; 所述步骤D中清除所述查找到的数据段具体为所述CPU将所述第一缓存区中的数据左移一个存储段的长度。
28.如权利要求25所述的方法,其特征在于,所述CPU根据预设方式,在预设分段的所述第一缓存区中查找到待输出的数据段,包括所述CPU获取所述第一缓存区低位端第一个存储段中的数据得到所述待输出的数据段; 所述步骤D中清除所述查找到的数据段具体为所述CPU将所述第一缓存区中的数据右移一个存储段的长度。
29.如权利要求21所述的方法,其特征在于,所述静态因子为密钥; 所述生成固定长度数据串,包括 步骤a:所述CPU将当前动态因子及所述静态因子组合,根据组合得到的数据的比特位数对组合得到的数据进行填充,得到原始数据,并将所述原始数据缓存在第三缓存区; 步骤b:对一组字寄存器设置初始值; 步骤c :按照512个比特位对所述第三缓存区中的数据按进行分段,并将偏移指针初始位置指向第一段数据; 步骤d:根据所述原始数据的当前段数据进行消息扩展,生成一组字数据; 步骤e:所述CPU对所述一组字寄存器中当前数据及所述一组字数据进行处理,并用处理结果更新所述一组字寄存器中的数据; 步骤f :判断所述原始数据的当前段数据是否为最后一段数据,是则执行步骤g,否则将偏移指针右移指向原始数据的下一段数据,返回步骤d ; 步骤g:获取所述一组字寄存器存储的数据,得到所述固定长度数据串。
30.如权利要求29所述的方法,其特征在于,所述根据组合得到的数据的比特位数对组合得到的数据进行填充,具体包括用所述组合得到数据的比特位数作为填充数据,填充得到的所述原始数据的比特位数为512的整数倍。
31.如权利要求30所述的方法,其特征在于,所述一组字寄存器可以为5个或8个字寄存器;当所述一组字寄存器为5个时,所述步骤d中生成的所述一组字为79个字数据; 当所述一组字寄存器为8个时,所述步骤d中生成的所述一组字为132个字数据。
32.如权利要求31所述的方法,其特征在于,所述步骤d具体包括 将所述原始数据的当前段数据每32位划分为一个字数据,得到16个字数据,顺序对已得到的字进行异或和/或与运算和/或模加运算和/或移位得到所述一组字数据。
33.如权利要求30所述的方法,其特征在于,所述步骤中CPU对所述一组字寄存器中当前数据及所述一组字进行处理具体为对一组字中不同字数据及所述一组字寄存器中不同寄存器中的数据进行异或运算、与运算、模加运算、移位操作,并不断用操作结果更新所述一组字寄存器中的数据,直到历遍所述一组字数据中所有的字数据。
34.一种在嵌入式系统中生成动态口令的装置,其特征在于包括 检测模块用于检测生成动态口令条件; 计时模块用于在所述检测模块检测到生成动态口令条件时,根据计时时间生成当前动态值; 第一存储模块用于存储第一预设值及静态因子; 第一生成模块用于根据当前动态值和/或所述第一存储模块中的第一预设值生成寻址指针的值; 第一判断模块用于根据当前动态值、所述第一预设值及所述寻址指针的值判断是否需要生成固定长度的数据串; 第二生成模块用于在所述第一判断模块判断需要生成固定长度的数据串时,根据当前动态值、所述第一预设值或所述寻址指针的值生成当前动态因子;并根据当前动态因子及所述第一存储模块存储的所述静态因子生成固定长度数据串; 第一缓存模块用于存储所述生成模块生成的所述固定长度数据串; 寻址模块用于对所述第一缓存模块中存储的所述固定长度数据串进行划分,并根据所述寻址指针的值寻找相应的数据段; 输出模块用于将所述寻找模块根据所述寻址指针的值寻找到的相应的数据段作为动态口令输出。
35.如权利要求34所述的装置,其特征在于,所述计时模块包括计数单元及计时单元, 所述计时单元用于计时,并在计时达到预设时间时清零重新开始计时; 所述计数单元用于当所述计时单元计时达到所述预设时间时计数一次; 所述检测模块检测到所述计时单元计时达到所述预设时间或检测到所述计数单元计数一次时,即检测到所述生成动态口令条件,所述计数单元还用于根据所述计时单元的计时时间生成当前动态值。
36.如权利要求35所述的装置,其特征在于,还包括按键输入模块,所述按键输入模块用于接收按键触发生成动态口令生成指令,当所述检测模块检测到动态口令生成指令即检测到所述生成动态口令预设条件。
全文摘要
本发明公开了一种在嵌入式系统中生成动态口令的方法及装置,涉及身份认证领域,该方法包括CPU检测到生成动态口令的预设条件,根据计时器得到当前动态值;生成寻址指针的值,并根据所述当前动态值或所述寻址指针的值判断是否需要生成固定长度数据串,是则生成当前动态因子,并调用静态因子,根据所述当前动态因子和所述静态因子生成所述固定长度数据串并存储在第一存储区,根据所述寻址指针的值查找对应的数据段作为动态口令输出;否则直接根据所述寻址指针的值在第一存储区中查找到对应的数据段作为动态口令输出。通过本发明方案减缓了动态口令的频繁生成对硬件的损耗,且降低了生成动态口令的耗时。
文档编号G06F21/00GK102750474SQ20121018210
公开日2012年10月24日 申请日期2012年6月4日 优先权日2012年6月4日
发明者于华章, 陆舟 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1