含义: 采用56位密钥加密64位明文数据,当N个64位明文数据块都经过DES加密处理之后再串联在一起,就是密文输出。 DES加密算法一般结构图:
DES算法中的几个难点:
讲解难点: 1、 初始置换和终止置换 初始置换和终止置换其实都是按照一定的规则(表)来进行排序的,终止置换和初始置换的排列是互逆的 即经过一次初始置换和终止置换64位二进制数就还原了 例如: 例题: 请写出0x0000 0080 0000 0002的终止置换的输出。 首先,这是一个十六进制数,我们要把它转化成二进制:
然后,经过终止置换表的置换,得出一组新的二进制数:
最后,再将其转化为十六进制数,即为终止置换的输出:0x0002 0000 0000 0001 2、 扩展置换 经过初始置换的64位数据,被分为左右各32位数据
其中,一边的32位数据经过扩展置换得到48位的数据。具体的扩展过程如下图所示:
扩展置换表:
举例: 11010001001101000010001100111011的扩展置换 首先,将原始数据分成八组:1101 0001 0011 0100 0010 0011 0011 1011 接着,将四个元素的的组,根据扩展置换表,扩展成六个元素的组,如下图所示: 旧组的第一位复制到了前一个新组的最后一位
旧组的最后一位复制到了下一个新组的第一位
最后,复制每组中间的四个元素到新的表里面
这样,就完成了从32位到48位的扩展置换的过程 3、 S盒压缩处理 经过扩展的48位明文和48位密钥进行异或运算之后,再使用8个S盒压缩处理得到32位数据,如图所示:
实际上就是将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),即为加密数所在的列数。
最后,根据行数和列数即可在压缩表中找到对应的压缩数(13),再把该S盒压缩处理压缩数转换为二进制(1101)输出,则完成了六位到四位的压缩过程。
接下来,每一组的压缩过程都与第一组一样,全部完成之后,则是从48位转换为32位的S盒压缩处理过程。 经过S盒压缩处理的32位输出,在直接经过一个P盒置换,就得到一轮运算中的最后输出。
|