密码学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位。
压缩函数
令A,B,C,D,E,F,G,H为缓冲区每个都为32位,SS1、SS2、TT1、TT2为中间变量。
处理完当前一轮分组后,拿缓冲区当前值继续处理之后的分组,直到所有分组都处理结束。最后输出的缓冲区中的值构成32 * 8 = 256位消息摘要。