【技术实现步骤摘要】
本专利技术涉及信息安全领域,特别是涉及一种SM3密码杂凑算法及确定其中的变量字的方法。
技术介绍
为了保证数据的安全,人们通常会将数据加密为密文,只有利用相应的密钥才能解密密文,得到原始数据明文。在该加解密的过程中,常常要用到密码杂凑算法,将任一不超过(264-1)比特的二进制比特串转换为固定长度,如256比特的二进制杂凑值输出。在密码学中,密码杂凑算法所用到的密码杂凑函数具有两个基本特性一是输入值与输出值一一对应,即两个不同的输入不可能生成同一个杂凑值;二是运算不可逆,即对于一已知的杂凑输出值y,要找到一个可以计算其输入值X的杂凑逆算法X = h(y)也是不可行的。因此,密码杂凑算法可以有效保证数据的安全,广泛应用于数字签名和验证、消息·认证码的生成和验证中,在保护信息完整性方面起着重要的作用。国家密码管理局发布的SM3密码杂凑算法具有良好的安全性,可满足多种密码应用的安全需求。该算法中,最核心的运算是在计算压缩函数V的各次迭代值的过程中用到的8个变量字A、B、C、D、E、F、G、H的64次迭代运算,第n次迭代运算的迭代公式为SSln-S7 (S12 (An^1)+E^+S (Tn));SSa = SSla 51 卜丄);TTln = FFn(Alri, Bn^1, Clri)+SS2JDM+W’ n ;TT2n = GGn (Elri, Fn^1, Glri)+SSln+Hn_i+Wn ;Dn = Cn^1 ;Dn = S9(Blri);Bn = An_1;An = TTln ;Hn = Glri ;Gn = S19(Flri);Fn = Elr ...
【技术保护点】
一种确定SM3密码杂凑算法中的变量字的方法,所述变量字为32比特长的A、B、C、D、E、F、G、H;其特征在于,该方法包括:步骤a:设置迭代次数n为0;确定32比特长度的常量Tn和132个32比特长度的消息扩展字W0?W67、W0’?W63’;进行初始化过程,所述初始化过程包括:设置各变量字的初始迭代值A?1、B?1、C?1、D?1、E?1、F?1、G?1、H?1;确定中间变量字P、Q的初始值P?1=D?1+W’0,Q?1=H?1+W0;步骤b:按照迭代公式进行一次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、P、Q和各变量字的第n次迭代值SS1n、SS2n、TT1n、TT2n、Pn、Qn、An、Bn、Cn、Dn、En、Fn、Gn、Hn;所述迭代公式包括:SS1n=S7[S12(An?1)+En?1+Sn(Tn)];SS2n=SS1n⊕S12(An-1);TT1n=FFn(An?1,Bn?1,Cn?1)+SS2n+Pn?1;TT2n=GGn(En?1,Fn?1,Gn?1)+SS1n+Qn?1;Dn=Cn?1;Cn=S9(Bn?1);Bn=An?1;An= ...
【技术特征摘要】
1.一种确定SM3密码杂凑算法中的变量字的方法,所述变量字为32比特长的A、B、C、D、E、F、G、H ;其特征在于,该方法包括 步骤a :设置迭代次数n为O ;确定32比特长度的常量Tn和132个32比特长度的消息扩展字Wci-W67' Wtl’ -W63’ ;进行初始化过程,所述初始化过程包括设置各变量字的初始迭代值 A_i、B_i、Cf D_p E_p F_i、G_i、H^1 ;确定中间变量字 P、Q 的初始值 P_i = D^1+Wj。,Q^1 =H-i+Wo ; 步骤b :按照迭代公式进行一次迭代运算,确定中间变量字SSI、SS2、TT1、TT2、P、Q和各变量字的第 n 次迭代值 SSln, SS2n、TTln, TT2n、Pn、Qn、An、Bn、Cn、Dn、En、Fn、Gn、Hn ;所述迭代公式包括SSln= S7[S12(Alri)+En-^Sn(Tn)];TTln = FFn(An+ Bn+ Cn-VSSSJPn-I ; TT2n = GGn (En+ Fn+ GnJ+SSlJQlri ; Dn = Clri ;Cn = S9(Blri); Bn = K-i ; An = TTln ; Hn = Glri ;Gn= S19(Flri); Fn = Elri ;En = P0(TT2n); Pn = Ur n+1; Qn = Gn-i+Wn+i ; 其中,Alri、Bn_i、Cm、En_i、Flri、Glri为相应变量字的第n-1次迭代值Tn+ Qlri分别为P和Q的第n-1次迭代值PFn(A1^BMClri)和GGn(En-PF1^Glri)均为布尔函数,其函数表达式分别为/7/7 ( A R C \ — / A-i ^-i Q-i (0^w^15)- \(4-1 n^_!)U(^_!HC^1 )U(4,-1 HC^1 )(16<W<63);GG ( F F Cr 、— f En-\ Fn-\ Gn-l (0^<15) wV 卜1,w-17 _ 1(^-1 ^(^00^)(16^^63);P0(TT2n)为置换函数,其函数表达式为P0(7T2 ) = 7T2 [f (TT2 )] [y7(TT2 )];上述的S7⑴、S12⑴、Sn(X)、S9⑴、S17⑴、S19⑴分别为对字X进行循环左移7比特、12比特、n比特、9比特、17比特、19比特的运算; 、n、U、_分别为异或、逻辑与、逻辑或、逻辑非运算符; 步骤c :n的值增加I ;判断n是否超过63,是则执行步骤d,否则,执行步骤b ; 步骤d :将所述各变量字的第63次迭代值A63、B63、C63> D63、E63> F63> G63、H63输出。2.根据权利要求I所述的方法,其特征在于,所述步骤a中确定32比特长度的常量Tn的方法为设置Tn为16进制表示的79cc4519 ; 在所述步骤b按照迭代公式进行一次迭代运算之前,该方法进一步包括确定本次迭代运算中的Tn,其方法为根据Tn与n的对应关系来确定Tn,所述对应关系为 Tn,其中的 79cc4519 和 7a879d8a 均为 16 进制数。3.根据权利要求I或2所述的方法,其特征在于,所述步骤a中确定132个32比特长度的消息扩展字Wtl-W6P Wtl’ -W6/的方法为 步骤al :将Wtl-W15分别置为所述SM3密码杂凑算法中长度为512比特的消息分组从最高比特位开始的第1-16个字的值,其中,每个字的字长为32比特; 步骤a2 :循环变量r从16起至67为止,根据 Wr =PlWr-I6 K-9 ^15(Ks)] s\wr_u) rr_6if# W16-W67 的值,其中,S15(X)、S7(X)分别为对消息扩展字X进行循环左移15比特和7比特的运算; 步骤a3 :循环变量!■从O起至63为止,根据< =R十%+4计算%,-W6/的值。4.根据权利要求I或2所述的方法,其特征在于,所述步骤a的初始化过程中设置各变量字的初始迭代值L1、B^1、CL1、D^1、E^1、F^1、G^1、H^1的方法为将各变量字的初始迭代值L1、Bf Cf D_p Ef Ff Gfl1依次置为所述SM3密码杂凑算法中长度为256比特的压缩函数值从最高位开始的第1-8个字的值,其中,每个字的字长为32比特。5.根据权利要求I所述的方法,其特征在于,所述P、Q以及各变量字均用32比特长度的字寄存器进行存储; 和/或,所述步骤a中确定P、Q的初始值的加法运算由加法器实现;所述步骤b迭代公式中的任一循环左移、异或、逻辑与、逻辑或、逻辑非、加法运算分别由相应的移位寄存器、异或门电路、与门电路、或门电路、非门电路、加法器实现。6.一种SM3密码杂凑算法,其特征在于,该算法包括 步骤I :接收长度不超过(264_1)比特的消息m,并对其进行填充,得到长度为512比特的k倍的填充消息m’,其中的k为不超过(255+1)的正整数; 步骤2:...
【专利技术属性】
技术研发人员:徐树民,王绍麟,田心,刘振,屈善新,刘建巍,
申请(专利权)人:航天信息股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。