目录
一、DES介绍
DES以64比特为一分组进行加解密(一般来说DES的密钥长度为64比特,但是实际为56比特,每7个比特会设置一个用于错误检测的比特);由于DES每次只能加密64比特,若果要加密的明文较长,需要对DES加密进行迭代
DES的加密与解密:
DES的基本结构称为Feistel网络,在Feistel网络中加密的各个步骤称为轮,整个加密的过程就是称为轮的循环。DES就是一种16轮循环的Feistel网络
二、Feistel网络
Feistel网络中的一轮:
1)一轮的具体步骤
1)将输入的数据被左右两半等分处理
2)将输入的右侧直接发送到输出的右侧
3)将输出的右侧发送到轮函数
4)轮函数根据右侧和子密钥,计算出一串比特序列
5)将得到的比特序列与左侧数据进行XOR运算,并将结果最为加密后的左侧
注:子密钥为本轮加密所使用的密钥,每一轮中都使用一个不同的子密钥;由于只在一轮中使用,且为局部密钥,故称为子密钥
由于右侧没有被加密,所以使用不同的子密钥对一轮进行重复处理若干次,并每两轮之间将左右两侧的数据对调
解密计算就是将加密计算进行反序操作
2)三轮加密与解密
3轮加密计算:
使用相同的子密钥运行Feistel网络就可将数据还原(第一次为加密,第二次为解密)
3轮解密计算:
Feistel网络总结
1)由此可以看出,Feistel网络论述可以任意增加,无论增加多少轮的运算,都不会发生无法解密的情况
2)加密时,无论使用任何函数作为轮函数都可正确解密(即使该函数没有反函数,因此轮函数可以设计的任意复杂)
3)加密和解密可以使用完全相同的结构来实现(在Feistel网络的一轮中,右侧没有经过任何处理,从而保证了数据的可解密性;因为没有任何处理的右侧是解密时的必要信息)