一种嵌入式安全芯片及其的蒙哥马利模乘运算方法_2

文档序号:8445385阅读:来源:国知局
马利模乘函数,对所述中间结果S进行更新,即S= MontF(S,I);
步骤S038,当T[i]的值满足逻辑真时,根据两个所述中间结果S和蒙哥马利模乘函数,对所述中间结果S进行更新,即S= MontF (S,S);
步骤S039,当所述中间结果S进行更新后,循环量i值自减常数1,即i=i_l接着进入步骤S034。
[0012]在步骤S031中,也可以理解为调用一次CaclStepEncode函数,输入所述第二预设参数E,输出运算标志数T,存储运算后的结果,返回运算标志数T和运算标志数T的数据位长度len = CaclStepEncode (E, T),其中第二预设参数E是需要计算多少次,E的值小于N值,运算标志数T的位长度不会超过E的位长的两倍。
[0013]在步骤S035中,T是一个数组,T[i]为数组中的一个元素,T[i]的值只取O或非O。
[0014]在具体实施中,如图3所示,所述步骤S031具体包括以下步骤:
步骤S0311,初始化第一变量ZeroCounter,第二变量OneCounter,循环变量i和第三变量 Out」,艮P ZeroCounter = 0,OneCounter=O, i=0,0ut_i=0 ;
步骤S0312,判断循环变量i是否小于等于E_Bitslen,其中E_Bitslen是第二预设参数的位长,如果是,进入步骤S0313,如果否,进入步骤S0323 ; 步骤S0313,当循环变量i小于等于E_Bitslen时,判断E[i]的值是否满足逻辑真,如果是,进入步骤S0314,如果否,进入步骤S0319 ;
步骤S0314,当E[i]的值满足逻辑真时,判断第一变量ZeroCounter是否等于零值,如果否,进入步骤S0315,如果是,进入步骤S0318 ;
步骤S0315,当第一变量ZeroCounter不等于零值时,判断第二变量OneCounter是否等于零值,如果是,步骤S0316,如果否,进入步骤S0317 ;
步骤S0316,当第二变量OneCounter等于零值时,运算标志数T [Out_i]赋值零,第三变量Out_i自增一,运算标志数T [Out_1:0ut_i+ ZeroCounter-l]赋值1,接着第三变量 Out_i 等于 Out_i+ ZeroCounter,第一变量 ZeroCounter 赋值为 1,即 T [0ut_i]=0,Out」= Out_i + l,T [Out」:0ut_i+ ZeroCounter-l] =1,0ut_i=0ut_i+ ZeroCounter,ZeroCounter=I,进入步骤 S0317 ;
步骤S0317,循环变量i自增一,即i=i+l,接着进入步骤S0312 ;
步骤S0318,当第一变量ZeroCounter等于零值时,第二变量OneCounter自增一,即OneCounter=OneCounter+l,接着进入步骤 S0317 ;
步骤S0319,当E[i]的值不满足逻辑真时,判断第二变量OneCounter是否等于零值,如果否,进入步骤S0320,如果是,进入步骤S0322 ;
步骤S0320,当第二变量OneCounter不等于零值,判断第一变量ZeroCounter是否等于零值,如果是,进入步骤S0321,如果否,进入步骤S0317 ;
步骤S0321,当第一变量ZeroCounter等于零值时,运算标志数T [Out_i:0ut_i+ ZeroCounter-l]赋值为 1,第三变量 Out_i 等于 Out_i+ ZeroCounter,第二变量OneCounter赋值为零值,第一变量ZeroCounter赋值为1,即T [Out_i:0ut_i+ZeroCounter-1] =1, 0ut_i=0ut_i+ ZeroCounter,OneCounter=O, ZeroCounter=I,接着进入步骤S0317 ;
步骤S0322,当第二变量OneCounter等于零值,第一变量ZeroCounter自增1,即ZeroCounter=ZeroCounter+l,接着进入步骤 S0317 ;
步骤S0323,当循环变量i不小于等于E_Bitslen时,判断第三变量Out_i值是否大于零,如果是,进入步骤S0324,如果否,进入步骤S0325 ;
步骤S0324,当第三变量Out_i值大于零时,第三变量Out_i自减1,即0ut_i=0ut_1-l ; 步骤S0325,输出位长度Ien= Out_i,和运算标志数T。
[0015]在具体实施中,如图4所示,所述步骤S031具体包括以下步骤:
步骤S0331,初始化运算标志数T和运算标志数T的位长度len,即T=0,Ien = O ;步骤S0332,判断所述第二预设参数E是否小于4,如果是,进入步骤S0333,如果否,步骤 S0337 ;
步骤S0333,当所述第二预设参数E小于4时;判断所述第二预设参数是否等于3,如果是,进入步骤S0334,如果否,进入步骤S0336 ;
步骤S0334,当第二预设参数E等于3,运算标志数T位或一即T = T | 1,位长度Ien自增一即 len=len+l ;
步骤S0335,输出位长度Ien= Out_i,和运算标志数T ;
步骤S0336,当第二预设参数E不等于3时,位长度Ien自增一即len=len+l,进入步骤S0335 ;
步骤S0337,当所述第二预设参数E大于等于4时,判断第二预设参数的二进制数最低位的值是否等于I,如果是,步骤S0338,如果否,步骤S0339 ;
步骤S0338,当第二预设参数E的二进制数最低位的值等于I时,运算标志数T位或一即T = T I 1,第二预设参数向右移一位即E = E ? 1,和位长度Ien自增一即len=len+l,进入步骤S0340;
步骤S0339,当第二预设参数E的二进制数最低位的值不等于I时,第二预设参数自减I即E = E -1,和位长度Ien自增一即len=len+l;
步骤S0340,运算标志数T向左移一位,即T = T〈〈1,进入步骤S0332。
[0016]在具体实施中,当计算得到蒙哥马利模乘转换系数D之后,通过现有的普通模乘运算,需要执行四次蒙哥马利模乘实现来普通数模乘运算,而改进后方式只需要执行二次蒙哥马利模就实现普通数模乘运算,因此改进后方式的实现控制运算的状态简化了一倍。如图5所示,所述步骤S04具体包括以下步骤:
步骤S051,根据第一输入参数NA、蒙哥马利模乘转换系数D和所述蒙哥马利模乘函数,得到第一模乘结果NAR ;
步骤S052,根据第二输入参数NB、第一模乘结果NAR和所述蒙哥马利模乘函数,得到最终模乘结果。
[0017]对于步骤S051,也就是说,调用一次蒙哥马利模乘函数,输入两个参数分别为NA、R2,R2为蒙哥马利模乘转换系数,NAR = MontF (NA, R2),NAR是一个变量。
[0018]对于步骤S052,也就是说,调用一次蒙哥马利模乘函数,输入两个参数分别为NAR、B,RE = MontF (NAR, B),RE是NA和NB关于模数N的模乘结果。
[0019]在具体实施中,如图6所示,所述步骤S04具体包括以下步骤:
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1