密码学09(SM3算法)

SM3算法

SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,接受文本大小要小于264位,并以512位为单位分组,输出长度为256位的摘要
与SHA算法大体相似。

消息填充

使报文长度与448mod512同余,最后64位存放报文长度。其中填充位数在1到512之间(注意没有0,也就是说一个长为448位的明文,需要再填充512位)。先填充一个1之后都填充0。

消息扩展

将消息分组B按以下方法扩展生成132个分组W0 ~ W67 和 W′0 ~ W′63。每个分组都为32位。
密码学09(SM3算法)

压缩函数

令A,B,C,D,E,F,G,H为缓冲区每个都为32位,SS1、SS2、TT1、TT2为中间变量。
密码学09(SM3算法)密码学09(SM3算法)
处理完当前一轮分组后,拿缓冲区当前值继续处理之后的分组,直到所有分组都处理结束。最后输出的缓冲区中的值构成32 * 8 = 256位消息摘要。