SM3杂凑算法是我国自主设计的密码杂凑算法
SM3是中华人民共和国政府采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。
在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。
完整源码下载地址:https://download.youkuaiyun.com/download/guoggn/18439171
一、 处理过程
1、分组
512bit为一组,
2、填充
不够512bit进行填充,假设消息m 的长度为l 比特。首先将比特“ 1”添加到消息的末尾,再添加k 个“ 0”, k是满
足l + 1 + k ≡ 448mod512 的最小的非负整数。然后再添加一个64位比特串,该比特串是长度l的二进
制表示。填充后的消息m′ 的比特长度为512的倍数
3、消息扩展
4、迭代压缩
二、c51代码
/* 压缩函数 */
void CF(u8 *arr)
{
u32 j;
u32 A, B, C, D, E, F, G, H;
u32 SS1, SS2, TT1, TT2;
#ifdef _DEBUG
printf("message = \n");
for (j = 0; j < 64; j++)
printf("%b02x", arr[j]);
printf("\n\n");
#endif
/* 消息扩展 */