无线局域网产品使用的 SMS4 密码算法
本算法是一个分组算法。该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算
法与密钥扩展算法都采用 32 轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮
密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
1. 术语说明
1.1 字与字节
用 表示 e-比特的向量集, 中的元素称为字, 中的元素称为字节。
e
Z
2
32
2
Z
8
2
Z
1.2 S盒
S 盒为固定的 8 比特输入 8 比特输出的置换,记为 Sbox(.)。
1.3 基本运算
在本算法中采用了以下基本运算:
⊕ 32 比特异或
i 32比特循环左移 i 位
<<<
1.4 密钥及密钥参量
加密密钥长度为 128 比特,表示为MK=(MK
0
, MK
1
, MK
2
, MK
3
),其中MK
i
(i=0,1,2,3)为
字。
轮密钥表示为(rk
0
, rk
1
, …, rk
31
),其中rk
i
(i=0,…,31)为字。轮密钥由加密密钥生成。
FK=(FK
0
, FK
1
, FK
2
, FK
3
)为系统参数,CK=(CK
0
, CK
1
,…, CK
31
)为固定参数,用于密钥扩
展算法,其中FK
i
(i=0,…,3)、CK
i
(i=0,…,31)为字。
2. 轮函数 F
本算法采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换。
设输入为 ,轮密钥为 ,则轮函数 F 为:
432
23210
)(),,,( ZXXXX ∈
32
2
Zrk ∈
)(),,,,(
32103210
rkXXXTXrkXXXXF
⊕
⊕
⊕
⊕
=
1