13、SM3密码杂凑算法
参考推荐:
国家密码管理局关于发布《SM3密码杂凑算法》公告(国密局公告第22号)_国家密码管理局
SM3_安冉冉的博客-CSDN博客_sm3
https://blog.csdn.net/bruce135lee/article/details/81811373
https://blog.csdn.net/wvqusrtg/article/details/110228989
SM3密码杂凑算法
SM3是我国采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。据国家密码管理局表示,其安全性及效率与SHA-256相当。在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。在信息安全中,有许多重要的应用,都使用了密码散列函数来实现,例如数字签名,消息认证码。
一、特性
一个理想的密码散列函数应该有四个主要的特性:
- 对于任何一个给定的消息,它都很容易就能运算出散列数值。
- 难以由一个已知的散列数值,去推算出原始的消息。
- 在不更动散列数值的前提下,修改消息内容是不可行的。
- 对于两个不同的消息,它不能给与相同的散列数值。
二、SM3算法流程
SM3对长度为小于2^64 比特的消息m, SM3杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256比特,具体流程如下:

1、填充
假设消息m 的长度为l比特,将l分组--将需要加密的文件转为2进制,然后分组为512*K+448(K 是满足l + 1 + K ≡ 448mod512 的最小的非负整数,不够用一个“1”和多个“0”补齐),再加上64位的文件长度信息构成512*(K+1)的分组。填充后的消息m′ 的比特长度为512的倍数。

2、主函数:迭代压缩
*迭代过程:

初始向量IV= 7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e
*消息扩展:

*压缩函数:

计算中间值TT1,TT2:


更新ABCDEFGH:在计算的TT1,TT2中间之后,依次更新各个寄存器如下:

3、输出杂凑值

注:
如有错误、侵权,请联系笔者更改、删除!!!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
