对称加密算法-DES、3DES
前两篇文章中已经分别介绍了对称加密与非对称加密的区别,以及非对称加密算法-RSA的详解。本篇文章主要介绍DES加密算法。
一、DES对称加密简介
des对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密算法。
二、DES加密的原理
采用56位的密钥以及附加的“8位奇偶校验位”,产生最大64位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
三、DES加密的具体步骤
1、假设八位的明文数据:0123 对应的2进制为 0000 0001 0010 0100
2、我们为将八位数据从中间分割为左右两大部分,即:
左L 0000 0001
右R 0010 0100
3、设我们的密钥为:3456 对应的2进制为 0100 1000 1001 1010
其中第8个位置与第16个位置就是上文所指的“8位奇偶校验位”,因此目前我们实际的秘钥仅有14位。
4、假设我们有一个这样的交换表
03,05,04,02,06
07,01,09,10,12,
13,11,14,15
0100 1000 1001 1010
该交换表中的数字代表着原数据的位置,如:将原数据中的第03位,放至在了新数据的第1个位置上。原数据中的第05位放在了新数据的第2位上。原数据中的第04位,放至在了新数据的第三位上。交换后的结果为:0101000 1011001 注:该置换去掉奇偶校验位的8与16
设C0=0101000 D0=1011001 下来依次是C1,D1为C0,D0左移一位,C2,D2为C1,D1左移一位,C3,D3为C2,D2左移两位。
则,C1=1010000 C2=0100001 D1=0110011 D2=1100110
得到该数据后,再次将上面得到的C0、C1、C2、D0、D1、D2进行交换表位置交换。得到全新的数据K1,K2,K3,K4,K5,K6。