高效实现Rijndael加密算法
1. Rijndael块密码描述
Rijndael是一种迭代块密码,对128位的密文状态进行操作,并使用128位密钥。它由对密文状态进行10次依赖于密钥的轮变换组成。
- 表示方式 :状态和密钥表示为一个16字节的方阵,有4行4列,也可看作GF(2⁸)¹⁶中的向量。设s为密文状态或密钥,si是状态s的第i个字节,si(j)是该字节的第j位。
- SubBytes(非线性层γ) :SubBytes变换是一种非线性字节替换,对每个字节独立操作。替换表(s盒)是可逆的,由两个操作组成:
- 在GF(2⁸)中求乘法逆元。
- 在GF(2)上进行仿射变换。
每个字节被视为GF(2)系数的多项式,SubBytes由s盒S的并行应用组成。
- ShiftRows变换(δ) :状态的行按不同偏移量循环移位。第0行不移位,第1行移1个字节,第2行移2个字节,第3行移3个字节。
- MixColumns变换(θ) :状态的列被视为GF(2⁸)上的多项式,并与固定多项式c(x) = ‘03’x³ + ‘01’x² + ‘01’x + ‘02’ 模x⁴ + 1相乘。这可以写成矩阵乘法,输出字节可表示为多个字节的异或运算。
- 轮密钥加法(σ[K]) :通过简单的逐位异或操作将轮密钥应用于状态。轮密钥由密钥调度从密文密钥派生而来,轮密钥长度等于块长度。
- 轮变换(ρ[K]) :轮变换是上述四个变换
Rijndael加密算法的高效实现与权衡
超级会员免费看
订阅专栏 解锁全文
41

被折叠的 条评论
为什么被折叠?



