type
status
date
summary
password
category
slug
icon
🔑SM4
基本概念
- 与DES和AES算法类似,SM4算法是一种分组密码算法。
- 其分组长度为128bit(16字节),密钥长度也为128bit。
- 加密算法与密钥扩展算法均采用32轮非线性迭代结构(指在程序中使用循环或递归等结构来重复执行一段代码,直到满足某个条件为止),以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。
- SM4 分组密码算法的解密算法以及加密算法拥有相同的结构特征 , 不同的地方是所使用的轮密钥顺序完全相反,解密轮密钥是加密轮密钥的逆序
![notion image](https://img-blog.csdnimg.cn/img_convert/eccc76e3e835092114151778dc8dd4ff.png)
![notion image](https://img-blog.csdnimg.cn/img_convert/dfbe35436d14a86f6c995c2e88ac6954.png)
两个算法的安全性均是基于S盒的非线性性以及线性变换提供的扩散作用。密钥的使用方式也均是将密钥与明文或加密结果异或。一点小区别在于,AES算法在每轮的最后使用密钥,而SM4算法在每轮的开始使用密钥。
密码工作模式:
- 电子密码本模式ECB
- 密码分组链接模式CBC
- 密码反馈模式CFB
- 输出反馈模式OFB
- 计数器模式CTR
📑加密 算法
先将128比特密钥 MK扩展为32个轮密钥 rk,再将该轮密钥与128比特明文 X 经过轮函数进行32次迭代后,选取最后四次迭代生成的结果 X32,X33,X34,X35进行反序变换,该变换结果作为最终的密文 Y 输出。
轮密钥的生成
![notion image](https://img-blog.csdnimg.cn/img_convert/d4f158ba4dcfb2143951388b55a503cf.png)
![notion image](https://img-blog.csdnimg.cn/img_convert/e0ab88e24cb1f14ffe17cdd3e31b8cbf.png)
轮函数
![notion image](https://img-blog.csdnimg.cn/img_convert/34f0caed7f6f7b1b724ee22a4175222e.png)
非线性变换 τ
非线性变换 τ: τ(B),τ 由4个并行的S盒构成。
![notion image](https://img-blog.csdnimg.cn/img_convert/f2db9cdea7c860622dbfb019a01c57b6.png)
反序列变化R
![notion image](https://img-blog.csdnimg.cn/img_convert/212dfc8adaaf9dda289e8da0e1763cb3.png)