国密SM4的C51源码C语言8051(ECB、CBC)

一、概述

SM4是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”

SM4主要用于数据加密,为非对称加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。

SM4无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

sm4非常节省资源,8051完全没有问题!

 

完整源码下载地址 :https://download.youkuaiyun.com/download/guoggn/18548821

二、流程

1、非线性变换t

      查表Sbox替换

2、线性变换L

     循环左移

3、32次轮迭代交换

4、反序变换

三、秘钥扩展

  秘钥128位扩展为256字节,方法同加密类似。

   

四、ECB和CBC

ECB(Electronic Code Book)/电码本模式,16字节一分组,组和组之间没有关系,组内容相同加密结果相同。

CBC(Cipher Block Chaining)/密文分组链接方式,首组用到IV,后一组用到前一组的输出,内容相同的组加密结果不同。

五、代码

/*
* sm4.c
* 此算法适用于C51的8位机
* C51为大端模式
* 输入数据长度不限,必须是16字节的倍数。
* 若是16字节倍数,需要先补齐到16字节倍数,
* SM3对输入数据分块取HASH,每消息块长度最大限定为64字节,
*/

// SMS4的密钥扩展算法
// 参数说明:Key为加密密钥,rk为扩展后密钥
void SMS4KeyExt(u8 *key, u32 *rk)
{
	int i = 0; 
	u32 k[36] = { 0 };     //用于密钥扩展算法与系统参数FK运算后的结果存储
	u32 *pMK = (u32 *)key;	
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值