SM3算法概述
SM3密码杂凑算法是中国国家密码管理局于2010年公布的中国商用密码杂凑算法标准。该算法由王小云等人设计,消息分组512比特,输出杂凑值256比特(32字节),采用Merkle-Damgard结构。SM3密码杂凑算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3密码杂凑算法的压缩函数结构和消息拓展过程的设计都更加复杂,比如,压缩函数的每一轮都使用2个消息字,消息拓展过程的每一轮都使用5个消息字等。
对长度为l(l < 264)比特的消息m,SM3杂凑算法经过填充和迭代压缩生成的杂凑值长度为256比特(32字节)。
SM3算法的特点
SM3密码杂凑算法压缩函数整体结构与SHA-256相似,但是增加了多种新的设计技术,包括16步全异或操作、消息双字介入、快速雪崩效应的P置换等,能够有效地避免高概率的局部碰撞,有效地抵抗强碰撞性的差分分析、弱碰撞性的线性分析和比特追踪法等密码分析。
SM3密码杂凑算法合理使用字加运算,构成进位加4级流水,在不显著增加硬件开销的情况下采用P置换,加速了算法的雪崩效应,提高了运算效率。同时,SM3密码杂凑算法采用了适合32b微处理器和8b智能卡实现的基本运算,具有跨平台实现的高效性和广泛的适用性。