背景
DES(Data Encryption Standard)
1977年被美国国家标准局提出(NIST)。它是密码学历史上第一个广泛应用于商用数据保密的密码算法,并开创了公开密码算法的先例,极大地促进了密码学的发展。是一种分组密码,属于对称密码。
输入
- 64位明文分组长度及56位的有效密钥长度,密钥长度为64位,有8位奇偶校验位。
过程
三个阶段:
- 64位明文经过初始置换,将其分为左右两组。
- 在密钥的参与下对左右两侧进行16轮相同轮函数的迭代,每轮都有置换和迭代,轮函数的具体过程和Feistel密码一样。
- 最后再经逆置换得到64位密文。
有关具体细节现在先不说了,当然其中还使用了S盒。
- 初始置换表就是指定了一个排列顺序,然后最后一步的逆置换表是初始置换表的逆。
- 对64位密钥的处理,首先是取出8位奇偶校验位,然后经过循环左移和置换操作进行处理
- S盒的目的其实就是一个置换表
AES(Advance Encryption Standard)
整体结构是首先对明文进行轮密钥相加,然后进行9轮处理,每轮包含四个步骤:字节代换、行移位、列混合、轮密钥加。再加最后一轮只有三个步骤:字节代换、行移位、轮密钥加,得到最终密文。解密过程就是加密过程的逆向进行,不同之处在于其中的字节代换是取的逆S盒,行移位方向相反,列混合是与逆变换矩阵相乘。下面具体说一下这四个步骤。
加密分为四个步骤:
- 字节代换: 主要是根据每个字节的前四位为行,后四位为列在S中找对应的元素进行代替
- 行移位: 简单的循环左移操作,以字节为单位,第0行不动,第1行循环左移1字节,依次左移。。。
- 列混合 :是通过矩阵相乘实现的,解密是乘逆变换矩阵。
- 轮密钥加: 将明文与轮密钥进行逐位的异或运算。