专利名称:在嵌入式系统中处理数据的方法及协处理器的制作方法
技术领域:
本发明涉及信息安全领域,具体而言,涉及一种在嵌入式系统中处理数据的方法及协处理器。
背景技术:
随着人们对信息安全的日益重视,密码算法逐渐完善,数据的乘法逆元在密码学领域也得到了充分应用,密码体制中密钥的生成、加解密等过程中都涉及到了乘法逆元的计算。现有技术中,乘法逆元的计算一般由CPU通过扩展欧几里得算法实现,而目前密码算法中涉及到的数一般都为大数,使计算乘法逆元的运算效率低,耗时长,且代价较高,从而使乘法逆元的计算成为算法实现的瓶颈,影响整个密码体制的执行速度。目前针对相关技术的计算乘法逆元的算法消耗资源量大,导致系统处理数据的效率低、耗时长以及代价高的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种在嵌入式系统中处理数据的方法及协处理器,以解决上述计算乘法逆元的算法消耗资源量大,导致系统处理数据的效率低、耗时长以及代价高问题。为了实现上述目的,根据本发明的一个方面,提供了一种在嵌入式系统中处理数据的方法,该在嵌入式系统中处理数据的方法包括接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;将预定数目参数中的第二参数值设置为第一参数的值减 2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;判断第二参数在当前偏移位的值是否为1,如果是,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果;如果不是,根据当前迭代数据获取第二运算结果,并将当前迭代数据的值替换为第二运算结果;在验证当前偏移位满足预设条件时,当前迭代数据为待处理数据的乘法逆元;输出得到的待处理数据的乘法逆元。进一步地,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果包括将当前迭代数据进行模平方运算,得到当前迭代数据的模平方;将待处理数据和当前迭代数据的模平方进行模乘运算,得到第一运算结果,其中,将第一参数作为模数。进一步地,在第二参数在当前偏移位的值不为1时,根据当前迭代数据获取第二运算结果包括在验证第二参数在当前偏移位的值不为1时,对当前迭代数据进行模平方运算,以获取第二运算结果。进一步地,当前迭代数据的值替换之后,验证当前偏移位是否满足预设条件,该验证当前偏移位是否满足预设条件的步骤包括判断当前偏移位是否为第二参数的最低位; 在当前偏移位为第二参数的最低位时,当前迭代数据为待处理数据的乘法逆元;在当前偏移位不为第二参数的最低位时,偏移位指向当前偏移位的右侧一位,返回验证所述第二参
5数在当前偏移位的值是否为1的步骤。为了实现上述目的,根据本发明的另一个方面,提供了一种在嵌入式系统中处理数据的方法,该在嵌入式系统中处理数据的方法包括接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;将预定数目参数中的第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;判断第二参数在当前偏移位的值是否为1,其中,在第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果,在第二参数在当前偏移位的值不为1时,偏移位指向当前偏移位的左侧一位,将预定数目参数中的第三参数的当前值自乘之后,返回判断所述第二参数在当前偏移位的值是否为1的步骤;在验证当前偏移位满足预设条件时,确定当前迭代数据为待处理数据的乘法逆元;输出得到的待处理数据的乘法逆元。进一步地,根据待处理数据和当前迭代数据的值进行模乘运算包括将第三参数的当前值和当前迭代数据进行模乘运算,其中,第三参数的初始值等于待处理数据,并将第一参数作为模数。进一步地,在当前迭代数据的值替换后,验证当前偏移位是否满足预设条件,该验证当前偏移位是否满足预设条件的步骤包括判断当前偏移位是否为第二参数的最高位; 在当前偏移位为第二参数的最高位时,当前迭代数据为待处理数据的乘法逆元;在当前偏移位不为第二参数的最高位时,执行将偏移位指向当前偏移位的右侧一位,将第三参数的当前值自乘之后,返回判断所述第二参数在当前偏移位的值是否为1的步骤。为了实现上述目的,根据本发明的又一方面,提供了一种协处理器,该协处理器包括获取模块,用于接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;设置模块,用于将第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;运算模块,用于判断第二参数在当前偏移位的值是否为1,其中,在第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果, 在第二参数在当前偏移位的值不为1时,根据当前迭代数据获取第二运算结果,并将当前迭代数据的值替换为第二运算结果;确定模块,用于在验证当前偏移位满足预设条件时,确定当前迭代数据为待处理数据的乘法逆元;输出模块,用于输出待处理数据的乘法逆元。进一步地,运算模块包括第一计算模块,用于在第二参数在当前偏移位的值为1 时,将当前迭代数据进行模平方运算,以获取当前迭代数据的模平方,并将待处理数据和当前迭代数据的模平方进行模乘运算,以获取第一运算结果,其中,将第一参数作为模数;在验证第二参数在当前偏移位的值不为1时,对当前迭代数据进行模平方运算,以获取第二运算结果。进一步地,装置还包括第一判断模块,用于判断当前偏移位是否为第二参数的最低位;第一处理模块,用于在当前偏移位为第二参数的最低位时,当前迭代数据为待处理数据的乘法逆元;在当前偏移位不为第二参数的最低位时,偏移位指向当前偏移位的右侧一位,返回验证所述第二参数在当前偏移位的值是否为1的步骤。为了实现上述目的,根据本发明的再一方面,提供了一种协处理器,该协处理器包括获取模块,用于接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;设置模块,用于将第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;运算模块,用于判断第二参数在当前偏移位的值是否为1,其中,在第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果, 在第二参数在当前偏移位的值不为1时,偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘之后,返回判断第二参数在当前偏移位的值是否为1的步骤;确定模块,用于在验证当前偏移位满足预设条件时,当前迭代数据为待处理数据的乘法逆元;输出模块,用于输出得到的待处理数据的乘法逆元。进一步地,运算模块包括第二计算模块,用于在第二参数在当前偏移位的值为1 时,将第三参数的当前值和当前迭代数据进行模乘运算,其中,第三参数的初始值等于待处理数据,并将第一参数作为模数。进一步地,装置还包括第二判断模块,用于判断当前偏移位是否为第二参数的最高位;第二处理模块,用于在当前偏移位为第二参数的最高位时,当前迭代数据为待处理数据的乘法逆元;在当前偏移位不为第二参数的最高位时,系统在执行将偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘之后,返回判断第二参数在当前偏移位的值是否为1的步骤。通过本发明,采用接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;将第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;判断第二参数在当前偏移位的值是否为1,其中, 在第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果,在第二参数在当前偏移位的值不为1时,根据当前迭代数据获取第二运算结果,并将当前迭代数据的值替换为第二运算结果;在验证当前偏移位满足预设条件时,当前迭代数据为待处理数据的乘法逆元;输出得到的待处理数据的乘法逆元。由于本申请的算法采用模乘运算来代替现有算法中的辗转相除计算,计算过程简单,从而解决了相关现有技术的计算乘法逆元的算法消耗资源量大,导致系统处理数据的效率低、耗时长以及代价高的问题,进而实现降低了计算乘法逆元的代价,提高了处理器系统,尤其是安全密码体制系统处理数据的工作效率的效果。
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是本发明实施例一的一种协处理器的功能结构示意图;图2是本发明实施例二的一种在嵌入式系统中处理数据的方法的流程图;图3是本发明实施例三的在嵌入式系统中处理数据的方法流程图;图4是本发明实施例四的在嵌入式系统中处理数据的方法流程图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。实施例一图1是根据本发明实施例的在嵌入式系统中的协处理器的功能结构示意图。如图 1所示,该协处理器包括获取模块10,用于接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;设置模块30,用于将第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;运算模块50,用于判断第二参数在当前偏移位的值是否为1,其中,当第二参数在当前偏移位的值为1时, 根据待处理数据和当前迭代数据进行模乘运算,以生成第一运算结果,并将当前迭代数据的值替换为第一运算结果,当第二参数在当前偏移位的值不为1时,根据当前迭代数据获取第二运算结果,并将当前迭代数据的值替换为第二运算结果;确定模块70,用于在验证偏移位满足预设条件时,将当前迭代数据定义为待处理数据的乘法逆元;输出模块90,用于输出得到的待处理数据的乘法逆元。本申请上述实施例实现将现有的模数为素数的乘法逆元的辗转相除计算转变为 通过嵌入式系统提供的模乘算法装置,即协处理器对待处理数据进行模乘运算的处理,得到待处理数据的乘法逆元。这种将乘法逆元的计算转换为模乘运算,缩短了计算乘法逆元的运算时长,提高了运算效率,在很大程度上解决了由于现有技术中乘法逆元的计算周期长而使得系统消耗资源大、处理数据效率低,从而影响密码体制整体执行速度的问题,进而实现降低了计算乘法逆元的代价,提高了处理器系统,尤其是安全密码体制系统处理数据的工作效率的效果。具体的,上述实施例中与获取模块10连接的功能模块还包括通信模块,接收与发送各模块之间通信数据;以及存储模块,用于存储待处理数据及第一参数、处理数据,该处理数据为对待处理数据进行运算后得到的数据,可以包括在计算乘法逆元过程中的准备数据、过渡数据及迭代运算的处理结果,其中,准备数据是指对待处理数据进行取模运算得到的运算结果,即指获得的当前迭代数据;过渡数据是指对当前迭代数据进行运算的处理结果,即对准备数据进行运算的结果。本申请上述实施例中的运算模块50可以包括第一计算模块,用于当第二参数在当前偏移位的值为1时,将当前迭代数据进行模平方运算,以生成当前迭代数据的模平方, 并将待处理数据和当前迭代数据的模平方进行模乘运算,以生成第一运算结果,其中,将第一参数作为模数;用于当第二参数在当前偏移位的值不为1时,对当前迭代数据进行模平方运算,以生成第二运算结果。本申请上述实施例中的装置还可以包括第一判断模块,用于判断当前偏移位是否为第二参数的最低位;第一处理模块,用于在当前偏移位不为第二参数的最低位时,将偏移位指向当前偏移位的右侧一位。另外的,图1所示协处理器还可以是如下实施装置,该协处理器可以包括获取模块10,用于接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数;设置模块30,用于将第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;运算模块50,用于判断所述第二参数在当前偏移位的值是否为1,其中,在所述第二参数在当前偏移位的值为1时,根据所述待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为所述第一运算结果,在所述第二参数在当前偏移位的值不为1时,偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘之后,系统返回重新判断所述预定数目参数中的第二参数在当前偏移位的值是否为1的步骤;确定模块70,用于在验证预定数目参数中的偏移位的值满足预设条件时,将当前迭代数据定义为待处理数据的乘法逆元;输出模块90, 用于输出得到的待处理数据的乘法逆元。本申请上述实施例中的运算模块可以包括第二计算模块,用于当第二参数在当前偏移位的值为1时,将第三参数的当前值和当前迭代数据进行模乘运算,其中,第三参数的初始值等于待处理数据,并将第一参数作为模数。本申请上述实施例中的装置还可以包括第二判断模块,用于判断当前偏移位是否为第二参数的最高位;第二处理模块,用于在当前偏移位不为第二参数的最高位时,执行将偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘。具体的,在上述实施例的实施过程中,运算模块50可以实现对当前迭代数据进行运算,得到第一运算结果或者第二运算结果,还可以用于执行偏移位的值自减运算,或执行偏移位的值的自加和第三参数的当前值自乘运算。而且在实施过程中还可以利用设置模块30来实现生成第二参数和偏移位,并设置第二参数的值、偏移位的初始位的功能,而且该模块还可以复用,用于生成第二、第三参数,并置第二参数的值和第三参数的初始值。优选地,本申请中的协处理器还可以包括替换模块用于将当前迭代数据的值替换为第一运算结果或第二运算结果的值;以及偏移模块用于将偏移位由第二参数的最高位逐位偏移至最低位,或用于将偏移位由第二参数的最低位逐位偏移至最高位。上述实施例中的第一处理模块、第二处理模块在协处理器中可以是同一个处理模块,实现在不同的阶段实现不同的功能,实现了功能复用,本发明中可以用于验证第二参数指定位上的数是否为1、偏移位的值是否为1或偏移位的值是否等于第二参数的位数。实施例二图2是根据本发明实施例的在嵌入式系统中处理数据的方法的流程图,如图2所示该方法包括如下步骤步骤S102,通过图1中的获取模块10来执行接收计算乘法逆元的指令,并根据指令来获取待处理数据以及第一参数。步骤S104,通过图1中的设置模块30来实现将第二参数的值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值。步骤S106,通过图1中的运算模块50来实现判断第二参数在当前偏移位的值是否为1,如果是,根据待处理数据和当前迭代数据进行模乘运算,以生成第一运算结果,并将当前迭代数据的值替换为第一运算结果;如果不是,根据当前迭代数据获取第二运算结果,并将当前迭代数据的值替换为第二运算结果。步骤S108,通过图1中的确定模块70来执行在验证当前偏移位满足预设条件时, 将当前迭代数据确定为待处理数据的乘法逆元。步骤S110,通过图1中的输出模块90来输出得到的待处理数据的乘法逆元。本发明上述实施例实现将乘法逆元的计算转换为模乘运算,通过嵌入式系统提供的模乘算法装置来实现,这种将乘法逆元的计算转换为模乘运算,缩短了计算乘法逆元的运算时长,提高了运算效率,在很大程度上解决了由于现有技术中乘法逆元的计算周期长而使得系统消耗资源大、处理数据效率低,从而影响密码体制整体执行速度的问题,进而实现降低了计算乘法逆元的代价,提高了处理器系统,尤其是安全密码体制系统处理数据的工作效率的效果。本发明上述实施例中的步骤S106可以替换为以下实施方法判断第二参数在当前偏移位的值是否为1,其中,当第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据进行模乘运算,以生成第一运算结果,并将当前迭代数据的值替换为第一运算结果,当第二参数在当前偏移位的值不为1时,将偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘之后,返回判断所述第二参数在当前偏移位的值是否为1。实施例三图3是本发明实施例三提出的一种在嵌入式系统中处理数据的方法流程图。实施例二的步骤S106中,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果的步骤可以包括将当前迭代数据进行模平方运算,以获取当前迭代数据的模平方;将待处理数据和当前迭代数据的模平方的值进行模乘运算,以获取第一运算结果,其中,将第一参数作为模数。同时,在验证第二参数在当前偏移位的值不为1时,对当前迭代数据进行模平方运算,以获取第二运算结果。优选地,在当前迭代数据的值替换之后,验证当前偏移位是否满足预设条件,该验证当前偏移位是否满足预设条件的步骤包括判断当前偏移位是否为第二参数的最低位; 在当前偏移位为第二参数的最低位时,当前迭代数据为待处理数据的乘法逆元;在当前偏移位不为第二参数的最低位时,偏移位指向当前偏移位的右侧一位。具体的,如图3所示,以椭圆曲线密码体制的签名计算过程中计算数据乘法逆元为例,提供了一种在嵌入式系统中处理数据的方法,详细的实现流程包括如下步骤步骤201 接收计算乘法逆元的指令,获取待处理数据、第一参数;优选地,在本实施例一中,计算乘法逆元指令为计算待处理数据乘法逆元的指令。第一参数为计算乘法逆元过程中的模数。具体地,在本实施例中,待处理数据与第一参数均为十六进制数,将待处理数据的值记为a,将第一参数的值记为p,且a和ρ的具体赋值可以如下a = 5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604Bρ = FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF步骤202 验证第一参数是否为素数,是则执行步骤203,否则返回错误信息,退出;优选地,在本实施例一中,验证第一参数是否为素数具体为随机取六个不同的且均小于第一参数的随机数,将第一参数作为模数,对每个随机数的(P-I)次幂分别进行取模运算,验证取模后得到的值是否均为1,若是则认为第一参数为素数,否则认为第一参数不是素数。步骤203 根据第一参数来设置第二参数,并将第二参数用二进制表示,偏移位的值记为i ;优选地,在本实施例一中,第二参数的值等于将第一参数的值减2得到的值,所述第二参数的二进制表示为
111111111111111111111111111111110000000000000000000000000000111100000 00000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111101在本实施例一中,第二参数的位数可以为256。步骤204 将迭代数据的初始值置为1,设置偏移位的初始位为所述第二参数的最高位;优选地,在本实施例一中,用迭代法计算所述待处理数据的乘法逆元,需要进行的迭代次数等于第二参数的位数。优选地,在本实施例中,步骤204还可以为步骤204'将待处理数据关于第一参数的模值作为迭代数据的初始值,设置偏移位的初始位为第二参数的次高位;优选地,在本实施例中,用迭代法计算待处理数据的乘法逆元,需要进行的迭代次数等于第二参数的位数减一。步骤205 判断第二参数在当前偏移位的值是否为1,如果是,执行步骤206 ;否则, 执行步骤207 ;步骤206 将第一参数作为模数,对当前迭代数据进行模平方运算,得到当前迭代数据的模平方数据,将当前迭代数据的模平方数据与待处理数据进行模乘运算,得到第一运算结果,并将当前迭代数据的值替换为第一运算结果的值,执行步骤108 ;步骤207 将第一参数作为模数,对当前迭代数据进行模平方运算,得到第二运算结果,将当前迭代数据的值替换为第二运算结果的值;步骤208 验证当前偏移位是否为第二参数的最低位,是则认为当前迭代数据为待处理数据的乘法逆元,执行步骤210,否则执行步骤209 ;步骤209 偏移位指向当前偏移位的右侧一位,返回步骤205 ;步骤210 输出当前迭代数据。此时的迭代数据即为待处理数据的乘法逆元。在本实施例中,经处理得到的待处理数据的乘法逆元AB9E4C64B60363073D968B0B529145986071EF1CD6DA80E9FF6BAD7FF511D9A5实施例四图4是根据本发明实施例二的在嵌入式系统中处理数据的方法流程图。上述实施例二的步骤S106可以替换为以下实施方式在第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果,在第二参数在当前偏移位的值不为1时,偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘之后,返回判断第二参数在当前偏移位的值是否为1的步骤。优选地,在上述当前迭代数据的值替换之后,验证当前偏移位是否满足预设条件, 该偏移位的值是否满足预设条件的步骤包括判断当前偏移位是否为第二参数的最高位; 在当前偏移位为第二参数的最高位时,当前迭代数据为待处理数据的乘法逆元;在当前偏移位不为第二参数的最高位时,系统在执行将偏移位指向当前偏移位的左侧一位,将预定
11数目参数中的第三参数的当前值自乘之后,返回重新判断预定数目参数中的第二参数在当前偏移位的值是否为1的步骤。具体的,如图4所示,本实施例以在椭圆曲线密码体制下,将雅克比射影坐标转换为仿射坐标过程中计算数据乘法逆元为例,提供了另一种在嵌入式系统中处理数据的方法,具体步骤如下步骤301 接收计算乘法逆元指令,获取待处理数据与第一参数;计算乘法逆元指令为计算待处理数据乘法逆元的指令。第一参数为计算待处理数据乘法逆元过程中的模数。优选地,在本实施例二中,待处理数据与第一参数都为二进制数,将待处理数据的值记为a',将第一参数的值记为ρ',则a'和ρ'的具体赋值可以如下a' = 1100010p' = 11111011步骤302 验证第一参数是否为素数,是则执行步骤303,否则返回错误信息,退出;优选地,在本实施例二中,验证第一参数是否为素数具体为随机取六个不同的且均小于第一参数的随机数,将第一参数作为模数,对每个随机数的(P' -1)次幂分别进行取模运算,验证取模后得到的值是否均为1,若是则认为第一参数为素数,否则认为第一参数不是素数。步骤303 根据第一参数设置第二参数、设置第三参数的初始值等于待处理数据的值;优选地,在本实施例中,第二参数的值为将第一参数的值减2,具体地,在本实施例中,所述第二参数用二进制表示为11111001优选地,在本实施例二中,第三参数为变量,置第三参数的初始值等于待处理数据的值。步骤304:将迭代数据的初始值置为1,设置偏移位的初始位为第二参数的最低位;步骤305 判断第二参数在当前偏移位的值是否为1,是则执行步骤306,否则执行步骤308 ;步骤306 将第一参数作为模数,对当前迭代数据与第三参数的当前值进行模乘运算,得到第一运算结果,并将当前迭代数据的值替换为第一运算结果的值;步骤307 验证当前偏移位是否为第二参数的最高位,是则认为当前迭代数据为待处理数据的乘法逆元,执行步骤209,否则执行步骤208。步骤308 第三参数的当前值自乘,偏移位指向当前偏移位的左侧一位,返回步骤 305。步骤309:输出当前迭代数据。此时的迭代数据即为待处理数据的乘法逆元。优选地,在本实施例中将待处理数据的乘法逆元记为b',经处理得到的待处理数据的乘法逆元为10010010。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。从以上的描述中,可以看出,本发明实现了如下技术效果与现有技术比,本发明将乘法逆元的计算转换为模乘运算,通过嵌入式系统提供的模乘算法装置来实现,在运算速度和实现方式上都具有绝对的优势,缩短了计算乘法逆元的运算时长,提高了运算效率, 在很大程度上解决了因现有技术中乘法逆元的计算周期长而影响密码体制整体执行速度的问题,且降低了计算乘法逆元的代价。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种在嵌入式系统中处理数据的方法,其特征在于,包括 步骤a 获取待处理数据以及第一参数;步骤b 将第二参数的值设置为所述第一参数的值减2,将偏移位的初始位设置为所述第二参数的预设位,并预设当前迭代数据的初始值;步骤c 判断所述第二参数在当前偏移位的值是否为1,如果是,根据所述待处理数据和当前迭代数据进行模乘运算,生成第一运算结果,并将当前迭代数据的值替换为所述第一运算结果;如果不是,根据当前迭代数据生成第二运算结果,并将当前迭代数据的值替换为所述第二运算结果;步骤d 判断当前偏移位是否满足预设条件,若满足则确定当前迭代数据为所述待处理数据的乘法逆元并执行下一步,若不满足则将偏移位指向当前偏移位的右侧一位,返回执行步骤c ;步骤e 输出所述待处理数据的乘法逆元。
2.根据权利要求1所述的方法,其特征在于,根据所述待处理数据和当前迭代数据进行模乘运算,生成第一运算结果包括将当前迭代数据进行模平方运算,得到前迭代数据的模平方,其中,将所述第一参数作为模数;将所述待处理数据和当前迭代数据的模平方进行模乘运算,得到所述第一运算结果, 其中,将所述第一参数作为模数。
3.根据权利要求1所述的方法,其特征在于,根据当前迭代数据生成所述第二运算结果包括对当前迭代数据进行模平方运算,得到所述第二运算结果,其中,将所述第一参数作为模数。
4.根据权利要求1-3中任一项所述的方法,其特征在于,步骤d所述判断当前偏移位是否满足预设条件具体为判断当前偏移位是否为所述第二参数的最低位。
5.一种在嵌入式系统中处理数据的方法,其特征在于,包括 步骤a 获取待处理数据以及第一参数;步骤b 将第二参数值设置为所述第一参数的值减2,将偏移位的初始位设置为所述第二参数的预设位,并预设当前迭代数据的初始值;步骤c 判断所述第二参数在当前偏移位的值是否为1,如果是,则根据第三参数的当前值和当前迭代数据进行模乘运算,生成第一运算结果,并将当前迭代数据的值替换为所述第一运算结果;如果不是,则执行步骤e ;步骤d 判断当前偏移位是否满足预设条件,若满足则将当前迭代数据确定为所述待处理数据的乘法逆元并执行下一步;若不满足则执行步骤e ;步骤e:将偏移位指向当前偏移位的左侧一位,并将第三参数的当前值自乘之后,返回执行步骤c ;步骤f 输出所述待处理数据的乘法逆元。
6.根据权利要求5所述的方法,其特征在于,根据第三参数的当前值和当前迭代数据进行模乘运算生成第一运算结果包括将第三参数的当前值和当前迭代数据进行模乘运算,其中,所述第三参数的初始值等于所述待处理数据,并将所述第一参数作为模数。
7.根据权利要求5或6所述的方法,其特征在于,步骤d所述判断当前偏移位是否满足预设条件具体为判断当前偏移位是否为所述第二参数的最高位。
8.—种协处理器,其特征在于,包括获取模块,用于接收计算乘法逆元的指令,并根据所述指令来获取待处理数据以及第一参数;设置模块,用于将预定数目参数中的第二参数的值设置为所述第一参数的值减2,将偏移位的初始位设置为所述第二参数的预设位,并预设当前迭代数据的初始值;运算模块,用于判断所述第二参数在当前偏移位的值是否为1,如果是,根据所述待处理数据和当前迭代数据进行模乘运算,生成第一运算结果,并将当前迭代数据的值替换为所述第一运算结果,如果不是,根据当前迭代数据生成第二运算结果,并将当前迭代数据的值替换为所述第二运算结果;确定模块,用于在当前偏移位满足预设条件时,将当前迭代数据确定为所述待处理数据的乘法逆元;输出模块,用于输出得到的所述待处理数据的乘法逆元。
9.根据权利要求8所述的协处理器,其特征在于,所述运算模块包括第一计算模块,用于当所述第二参数在当前偏移位的值为1时,将当前迭代数据进行模平方运算,生成当前迭代数据的模平方,并将所述待处理数据和当前迭代数据的模平方进行模乘运算,以生成所述第一运算结果,其中,将所述第一参数作为模数;当所述第二参数在当前偏移位的值不为1时,对当前迭代数据进行模平方运算,生成所述第二运算结果。
10.根据权利要求8所述的协处理器,其特征在于,所述协处理器还包括第一判断模块,用于判断当前偏移位是否为所述第二参数的最低位;第一处理模块,用于在当前偏移位不为所述第二参数的最低位时,将偏移位指向当前偏移位的右侧一位。
11.一种协处理器,其特征在于,包括获取模块,用于获取待处理数据以及第一参数;设置模块,用于将预定数目参数中的第二参数的值设置为所述第一参数的值减2,将偏移位的初始位设置为所述第二参数的预设位,并预设当前迭代数据的初始值;运算模块,用于判断所述第二参数在当前偏移位的值是否为1,如果是,根据所述待处理数据和当前迭代数据进行模乘运算,生成第一运算结果,并将当前迭代数据的值替换为所述第一运算结果,如果不是,则将偏移位指向当前偏移位的左侧一位,并将第三参数的当前值自乘;确定模块,用于在当前偏移位满足预设条件时,确定当前迭代数据为所述待处理数据的乘法逆元;输出模块,用于输出得到的所述待处理数据的乘法逆元。
12.根据权利要求11所述的协处理器,其特征在于,所述运算模块包括第二计算模块,用于所述第二参数在当前偏移位的值为1时,将第三参数的当前值和当前迭代数据进行模乘运算,其中,所述第三参数的初始值等于所述待处理数据,并将所述第一参数作为模数。
13.根据权利要求11所述的协处理器,其特征在于,所述协处理器还包括 第二判断模块,用于判断当前偏移位是否为所述第二参数的最高位; 第二处理模块,用于在当前偏移位不为所述第二参数的最高位时,将偏移位指向当前偏移位的左侧一位,将第三参数的当前值自乘。
全文摘要
本发明公开了一种在嵌入式系统中处理数据的方法及协处理器。其中,该方法包括获取待处理数据以及第一参数;将预定数目参数中的第二参数值设置为第一参数的值减2,将偏移位的初始位设置为第二参数的预设位,并预设当前迭代数据的初始值;并在第二参数在当前偏移位的值为1时,根据待处理数据和当前迭代数据的值进行模乘运算,以获取第一运算结果,并将当前迭代数据的值替换为第一运算结果;在验证当前偏移位满足预设条件时,将当前迭代数据作为待处理数据的乘法逆元输出。通过本发明能够提高处理器系统,尤其是安全密码体制系统处理数据的工作效率。
文档编号G06F7/523GK102354279SQ20111027821
公开日2012年2月15日 申请日期2011年9月19日 优先权日2011年9月19日
发明者于华章, 陆舟 申请人:飞天诚信科技股份有限公司