国密SM3的C语言代码C51移植到8051

本文详细介绍了SM3算法,包括其作为我国自主设计的密码散列函数标准,用途、处理过程(分组、填充、消息扩展和迭代压缩),以及提供C51代码示例。文章还展示了如何在C语言中实现SM3算法和两个示例测试用例。
摘要由CSDN通过智能技术生成

    SM3杂凑算法是我国自主设计的密码杂凑算法

    SM3是中华人民共和国政府采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。

    在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。

完整源码下载地址:https://download.csdn.net/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
	
		/* 消息扩展 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值