分组密码
AES
基本加解密
如上为图解。
AddRoundKey
每一块与密钥块或Keyschedule之后的密钥块进行异或运算。
SubBytes
通过替换表(S-Box)进行字节替换
ShiftRows
正向行移位第一行不变,第二行循环左移1位,第三行循环左移2位,第四行循环左移3位。
MixColumns
与特定矩阵进行左乘,此处乘法和加法有定义。
如上是加解密全过程。
实际上,交换逆向行移位和逆向字节代替并不影响结果;交换轮密钥加和逆向列混淆并不影响结果,关键在于可以把异或看成域上的多项式加法,其次多项式中乘法对加法具有分配律。
DES
基本加解密
加密
我们可以考虑一下每一轮的加密过程
$L_{i+1}=R_i$
$R_{i+1}=L_i⊕F(R_i,K_i)$
那么在最后的 Permutation 之前,对应的密文为$(R_{n+1},L_{n+1})$。
解密
那么解密如何解密呢?首先我们可以把密文先进行逆置换,那么就可以得到最后一轮的输出。我们这时考虑每一轮
$R_i=L_{i+1}$
$L_i=R_{i+1}⊕F(L_{i+1},K_i)$
因此,$(L_0,R_0)$ 就是加密时第一次置换后的明文。我们只需要再执行逆置换就可以获得明文了。
可以看出,DES 加解密使用同一套逻辑,只是密钥使用的顺序不一致。