AES和DES加密算法

阅读数:5 评论数:0

跳转到新版页面

分类

算法/数据结构

正文

一、密码学的常见概念

1、代替密码

代替密码是指先建立一个替换表,加密时通过查表,将明文的每个字母依次替换为对应的字符,生成密文。

按替换表的个数又细分为:

(1)单表代替密码

即一个明文字符对应一个密文字符。

(2)多字母代替密码

字符块被成组加密。

(3)多表代替密码

明文可以映射成密文字母的多个映射。

二、DES算法

DES分组长度为64比特,使用密钥为64比特,实际使用56比特,另外8比特用作奇偶校验,密钥对明文口上进行16轮加密,加密和解密共用同一算法,所以它是对称加密算法。

1、初始转换IP与逆初始转换

(1)初始转换IP的作用:将64位明文打乱重新排列。

(2)初始置换结果分为两组:左L0(32位)、右R0(32位)

2、子密钥产生

64位密钥经过上面的步骤产生16个长度48位的子密钥。

(1)置换选择1

去掉密钥中位置位8的整数倍的奇偶校验位,共8个,去掉奇偶检验位后,生成左28位,右28位。

(2)循环左移

DES每一轮迭代对应子密钥循环左移的次数。

3、转换选择2

这是一个压缩转换,把56位的输入压缩为48位。

4、安全性

如果DES密钥太短经不起穷尽攻击。

三、3DES

3DES有两种加密方式:

1、第一、三次加密使用同一种密钥,这种方式密钥长度128位(112位有效)。

2、三次加密使用不同密钥,这种方式密钥长度192位(168位有效)。

四、AES算法

Advanced Encryption Standard的缩写,是常见的对称加密算法

AES和DES一样都应用了轮的思想,将明文经过多轮处理得到密文。二者不同之处是,AES明文分组长度和密钥长度可以灵活组合。加密过程首先对明文进行分组,AES明文分组长度可以是128位、192位、256位;密钥长度也可以是128位、192位、256位。

1、AES数学

(1)有限域

有限域的元素个数必须是一个素数的幂次$p^n$

n为正整数,元素个数为$p^n$的有限域一般记为$GF(p^n)$

(2)乘法逆元

对于有限域$GF(p^n)$,任意的存在$w\in GF(p^n)$,$w\not=0,\quad z\in GF(p^n)$,使得$x*z\equiv 1 mod p$,则z为w在该有限域上的乘法逆元。

2、AES运算的特点

AES中的运算包含面向字节(8位)或4字节(32位)的运算。

3、AES算法框架

(1)明文矩阵

用二维矩阵表示,4行,$N_b$列,每个元素为1个字节。

$N_b=\frac{数据块长度}{32}$,当数据块长128时,$N_b=4$,当数据块192位,$N_b=6$,当数据块256位,$N_b=8$。

(2)密钥矩阵

用于维矩阵表示,4行,$N_k$列,每个元素1个宽了节。

$N_k=\frac{密钥长度}{32}$

(3)加密轮数

值取决于明文块和密钥块长度。

(4)算法框架

以AES-128为例,前9轮执行的操作相同,第10轮执行的操作与前面的不同。

加密时,明文按照128位为单位进行分组,每组包含16个字节,组成4x4的矩阵,称为明文矩阵。

以128位密钥为例,密钥长度为16个字节,也用4x4的矩阵表示,称为密钥矩阵。

AES通过密钥编排函数把密钥矩阵扩展成一个包含44个字(字=4个字节,32位)的密钥序列,其中的前4个字为原始密钥用于初始加密,后面40个字用于10轮加密,每轮使用其中的4个字。密钥递归产生的规则 如下:

如果i不是4的倍数,那么$w[i]=w[i-4]\oplus w[i-1]$,如果i是4的倍数,$w[i]=w[i-4]\oplus T(w[i-1])$

(5)字节代替

与$GF(2^8)$上的乘法逆元有关,具有良好的非线性特性。

(6)行移位

每一行都向左循环位移某个偏移量。

(7)列混淆

每一列的四个字节通过线性变换互相结合。

(8)轮密钥加

将当前矩阵与本回合矩阵合并,即矩阵中每个对京原字节异或加法。