含义:

采用56位密钥加密64位明文数据,当N个64位明文数据块都经过DES加密处理之后再串联在一起,就是密文输出。

DES加密算法一般结构图:

delphi des加密解密 des加密解密过程_网络安全

DES算法中的几个难点:

delphi des加密解密 des加密解密过程_系统安全_02

讲解难点:

1、 初始置换和终止置换

初始置换和终止置换其实都是按照一定的规则(表)来进行排序的,终止置换和初始置换的排列是互逆的

即经过一次初始置换和终止置换64位二进制数就还原了

例如:

delphi des加密解密 des加密解密过程_网络安全_03

delphi des加密解密 des加密解密过程_安全_04

delphi des加密解密 des加密解密过程_delphi des加密解密_05


例题:

请写出0x0000 0080 0000 0002的终止置换的输出。

首先,这是一个十六进制数,我们要把它转化成二进制:

delphi des加密解密 des加密解密过程_网络安全_06

然后,经过终止置换表的置换,得出一组新的二进制数:

delphi des加密解密 des加密解密过程_网络安全_07

delphi des加密解密 des加密解密过程_安全_08

最后,再将其转化为十六进制数,即为终止置换的输出:0x0002 0000 0000 0001

2、 扩展置换

经过初始置换的64位数据,被分为左右各32位数据

delphi des加密解密 des加密解密过程_delphi des加密解密_09

其中,一边的32位数据经过扩展置换得到48位的数据。具体的扩展过程如下图所示:

delphi des加密解密 des加密解密过程_网络安全_10

扩展置换表:

delphi des加密解密 des加密解密过程_网络安全_11

举例:

11010001001101000010001100111011的扩展置换

首先,将原始数据分成八组:1101 0001 0011 0100 0010 0011 0011 1011

接着,将四个元素的的组,根据扩展置换表,扩展成六个元素的组,如下图所示:

delphi des加密解密 des加密解密过程_网络安全_12


旧组的第一位复制到了前一个新组的最后一位

delphi des加密解密 des加密解密过程_网络安全_13

旧组的最后一位复制到了下一个新组的第一位

delphi des加密解密 des加密解密过程_安全架构_14

最后,复制每组中间的四个元素到新的表里面

delphi des加密解密 des加密解密过程_系统安全_15

这样,就完成了从32位到48位的扩展置换的过程

3、 S盒压缩处理

经过扩展的48位明文和48位密钥进行异或运算之后,再使用8个S盒压缩处理得到32位数据,如图所示:

delphi des加密解密 des加密解密过程_网络安全_16

实际上就是将48位输入等分成8块,每块6位输入,压缩为4位输出。在具体处理时分别是用8章4行16列的表来进行压缩的。

例如:111111100101110011001100011001010111111011011000

分成八组,每组6位:111111 100101 110011 001100 011001 010111 111011 011000

首先,取出一组数据(第一组:111111)的第一位(1)和最后一位(1),组成一组新的二进制数据(11),再把它转化为十进制数(3),这个数即为加密数所在的行数。

然后,取该组数据(111111)中间的四位(1111)组成一组新的二进制数据(1111),再将该二进制数据(1111)转化成十进制数(15),即为加密数所在的列数。

delphi des加密解密 des加密解密过程_delphi des加密解密_17

最后,根据行数和列数即可在压缩表中找到对应的压缩数(13),再把该S盒压缩处理压缩数转换为二进制(1101)输出,则完成了六位到四位的压缩过程。

delphi des加密解密 des加密解密过程_安全_18

接下来,每一组的压缩过程都与第一组一样,全部完成之后,则是从48位转换为32位的S盒压缩处理过程。

经过S盒压缩处理的32位输出,在直接经过一个P盒置换,就得到一轮运算中的最后输出。

delphi des加密解密 des加密解密过程_系统安全_19

delphi des加密解密 des加密解密过程_delphi des加密解密_20