下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于SM3算法的结构与步骤学习

作者:课课家教育     来源: http://www.kokojia.com点击数:2284发布时间: 2019-01-24 10:25:31

标签: 信息安全工程师密码学Hash函数SM3算法

软考,您想通过吗?一次通过才是硬道理

      SM3算法是Hash算法当中的一种,在信息安全工程师这门课程里也有专门讲到这个算法,不知道你是否了解它的算法结构以及算法步骤呢?没关系,不管你懂还是不懂,都可以跟着小编一起来探讨一下它的真面目。也希望通过这里的小学习使得懂SM3算法的同学更了解它,不懂的同学也能够初步认识它。

  SM3算法是2010年中国国家密码管理局发布的一个商用算法,它的名称为SM3密码杂凑算法,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,多种的密码应用都能满足其安全需求。

      SM3算法采用了典型的Merk1e-Damgård 迭代结构,简称为M-D 结构,结构的图形描述如下图。

 关于SM3算法的结构与步骤学习_信息安全工程师_密码学_Hash函数_SM3算法_课课家

      SM3算法步骤

  1.填充过程

      设消息M的长度为Lbit,首先将bit"1"添加到消息末尾,再加k个“0”,k是满足l+1+k =448 mod 512的最小非负整数。然后再添加一个64bit串,该串是L的二进制表示,填充后的消息M'长度为512的整数倍。

  例如:对消息01100001 01100010 01100011,其长度l=24,经填充得到比特串:01100001 01100010 01100011 1 00...00(423比特) 00...011000(64比特l的二进制表示)

  2.迭代压缩过程

  (1)迭代过程:

  M'按照512bit进行分组:M'=B(0)B(1)...B(n-1)

  n=(l+k+65)/512.

  迭代过程如下:

  FOR i=0 to n-1

  V(i+1) = CF(V(i),B(i)

  ENDFOR

  CF为压缩函数,V(0)为初始值IV,迭代压缩的结果为V(n)

  (2)消息扩展:

  消息分组B(i)扩展生成132个字W0,W1,...W67,W0',W1'...W63'。

  a)消息分组B(i)划分为16个字W0,W1,...W15.

  b)FOR j=16 to 67

  Wj=P1(Wj-16 ^ Wj-9 ^ (Wj-3 <<<15)^(Wj-13<<<7)^Wj-6

  ENDFOR

  c)FOR j=0 to 63

  Wj'=Wj^Wj+4

  ENDFOR

  (3)压缩函数:

  A/B/C/D/E/F/G/H为字寄存器,SS1/SS2/TT1/TT2为中间变量,压缩函数V(i+1) = CF(V(i),B(i))计算过程如下:

  ABCDEFGH = V(i)

  FOR j=0 to 63

  SS1 = ((A<<<12)+E+(Tj<<

  SS2 = SS1^(A<<<12)

  TT1 = FFj(A,B,C)+D+SS2+Wj'

  TT2 = GGj(E,F,G)+H+SS1+Wj

  D = C

  C = B<<<9

  B = A

  A = TT1

  H = G

  G = F<<<19

  F = E

  E = P0(TT2)

  ENDFOR

  V(i+1) = ABCDEFGH^V(i)

      运算过程中,字按照大端格式存储。

  3.杂凑结果

  杂凑结果为256bit值y=ABCDEFGH=V(n)

  SM3密码杂凑算法在密码学当中具有重要的地位,它的压缩函数与SHA-256的压缩函数具有相似的结构,但SM3密码杂凑算法的设计较之更为复杂,而且目前对于SM3密码杂凑算法的攻击还比较少。

  杂凑函数的设计和应用已经发展了好几十年,杂凑函数在经过了进十多年的分析中也取得了不少的成果。而SM3密码杂凑算法作为其中的一种,如今在许多领域上都有应用。本节就降到这里了,希望小编的这些整理能对大家有所帮助。想要学习更多课程可以到课课家教育进行了解哟!

赞(30)
踩(2)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程