简易版DES加密详解
1.二进制数据的转换
不仅仅是DES密码,在其它的现代密码中也应用了二进制数据,所以无论是文章还是数字,都需要将明文变换为二进制数据,如表1所示,这里仅将使用的16字符(其中含有1个没有意义的空字符),将每个字符都对应不同的4bit的二进制编码进行变换,将明文表示成"0"和"1"的系列。
字符 | 二进制编码 |
---|---|
A | 0000 |
B | 0001 |
C | 0010 |
D | 0011 |
E | 0100 |
F | 0101 |
G | 0110 |
H | 0111 |
I | 1000 |
J | 1001 |
K | 1010 |
L | 1011 |
M | 1100 |
N | 1101 |
O | 1110 |
空字符 | 1111 |
2.DES密文的生成
DES采用了64位的分组长度和56位的密钥长度,它将64位的输入经过一系列的变换得到64位的输出,解密则使用了相同的步骤和相同的密钥。
为了进行简易的说明,在该文章里我们以8bit为一组对简易DES密码进行分析,首先先把DES总的处理流程用下图1表示。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/379e998a1b7330ee0313a19e350def23.png)
(1)首先把要加密的明文按照表1变成“ 0 ” 或“ 1 ”的排列,这就是明文要输入的二进制。例如我们要发送的明文是“ MC ”,按照表1,“ MC ” = ( 1100 0010 )。
(2)明文二进制按照表2进行初期置换,置换的过程如图2所示,置换后的结果为“ 10001001 ”。
输入bit的位置 j | 输出bit的位置 k |
---|---|
1 | 5 |
2 | 1 |
3 | 6 |
4 | 2 |
5 | 7 |
6 | 3 |
7 | 8 |
8 | 4 |
(3)将(2)中得出的二进制数据分割为左侧“ 1000 ”和右侧“ 1001 ”,即
(4)根据表3对R 0进行扩大置换, 把4bit变为6bit。
输入bit的位置 | 输出bit的位置 |
---|---|
1 | 3 |
2 | 4 |
3 | 1 |
4 | 2 |
5 | 3 |
6 | 4 |
所以:ER0 = 011001
(5)将扩大置换ER0和密钥K1 = 110001进行异或运算: