杂凑算法,也称哈希算法,在信息安全领域中用于计算消息的摘要,校验消息的完整性。
国际标准的常用哈希算法有消息摘要算法MD5, 安全哈希算法SHA系列等。
本文介绍国家密码管理局发布的杂凑算法标准SM3,详见国家密码管理局官方网站.
SM3算法图解
整体流程
SM3算法整体流程如下:
可以看到,整个流程包括消息填充、分块、迭代压缩3个步骤。
其中,输入为长度 l l (
)的消息 x x ,输出为256-bit的杂凑值
, B0,B1,...Bn−1 B 0 , B 1 , . . . B n − 1 为填充后消息的分块(共n个块),消息块大小为512-bit, CF C F 为压缩函数, V0,V1,...Vn V 0 , V 1 , . . . V n 为各消息块迭代压缩结果,大小为256-bit,最终得到的消息杂凑值为 y=Vn y = V n 。
压缩函数CF
压缩函数可表示为:
Vi+1=CF(Vi,Bi),i=0,...n−1,V0=IV V i + 1 = C F ( V i , B i ) , i = 0 , . . . n − 1 , V 0 = I V
IV=7380166f4914b2b9172442d7d