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