DES加密算法原理和实现过程 您所在的位置:网站首页 des加密的工作过程 DES加密算法原理和实现过程

DES加密算法原理和实现过程

2023-12-06 23:13| 来源: 网络整理| 查看: 265

今天介绍一下加密算法,介绍一下自己的理解,可能会有不足,后续将会补充。 由于DES算法是一个典型的对称加密算法,故首先介绍一下对称加密算法。 对称加密算法概念: 顾名思义就是加密和解密过程使用的加密算法和解密算法是一样的,并且所需要的密钥也是一样的,这就要求接受方事先知道发送方的密钥,具体过程是数据发送方将明文(也就是原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接受方收到密文后,使用加密密钥和相同加密算法对密文进行解密,恢复出明文。这里可能有误区,为什么再进行一次就能恢复出明文呢?实际上这个加密算法是进行特殊处理过的,两次之后就能得到一模一样的数据。 左为发送方,右为接受方 左为发送方,右为接受方。

特点:算法公开,计算量小,加密速度快,加密效率高。 DES算法为对称加密算法的代表,虽然现在可以实现暴力破解,但是对于我们研究其他改进的对称加密算法很有必要。 下面讲解一下DES加密算法原理: **由于大部分原始数据比较长,首先需要将数据切分成64位的明文分组。 **使用的密钥为64位,有效的密钥长度其实是56位(分成8段的,每段长为8位,每隔8位设置最后一位为校验位,采用的是奇偶校验法)。 **加、解密类似,但密钥的顺序正好相反。 **加密明文比较长,需要对DES加密进行反复迭代。 下面介绍需要理解的几个知识点: 密钥初始置换: 密钥需要置换一下,因为对明文加密的时候需要这个密钥生成的16个子密钥进行加密,现在只需要理解下面这个过程生成了16个子密钥,需要在对明文加密的时候使用就可,里面也有几个置换表,这个也是设计好的。 在这里插入图片描述讲一下密钥初始置换过程: 1)首先将64位密钥按照置换选择1表(也称为pc-1表)进行置换,就是调换一下之前的排列位置。 2)将密钥从中间平均分为左右两部分,我这里用两个字母表示C0和D0(密钥每隔8位也有一个校验位,所以其实是56位有效数据,一分为二也就是28位),接着按照循环左移表进行左移(右侧的那张表),第一行和第三行为左移的次数(总计16次),第二行和第四行为左移的位数(有左移1位的,也有左移2位的,如表所示)。 3)循环左移之后生成了C2和D2,合并之后形成56位的密钥,经过置换选择2表,也就是PC-2表(注意PC-1表和PC-2表不同),经过置换变成48位的子密钥K1(后面加密明文要用)。 4)接着C1和D1继续循环左移,再经过PC-2表形成子密钥K2。 5)按照4步骤,直到生成子密钥K16为止。

IP初始置换: 有个IP初始置换表,这个是IBM公司设计好的,就是把64位的明文按照IP置换表进行位置的改变。 例如: 明文M=m1,m2,m3,…,m63,m64; 按照IP置换表,第58位应该换到第1位,第50位换到第二位……; 置换之后为 M’=m58,m50,…,m15,m17。 (只需理解意思就好,如果想详细了解那张表结构,可以去网上搜索)

下图为明文加密过程: 在这里插入图片描述 明文加密过程: 1)先将64位明文进行IP初始置换。 2)将置换后的明文平均分成左右两部分L0和R0(每个长度32位)。 3)之后对L0的加密需要用到R0的数据,以R0的数据和K1(上一幅图密钥经过16轮置换生成的16个子密钥中的K1)作为输入,输入到f函数生成的数据 (后面会将这部分,R0是32位的,需要进行扩展置换变成48位,与48位的子密钥K1进行异或运算,生成48的数据,这个数据需要进行S盒压缩变成32位的数据,再跟L0进行异或操作) ,最后生成32位的数据变成右侧R1;对于R0的数据保持不变,变成左侧的L1。 4)重复步骤3,经过16轮,最终生成R16和L16. 5)按照逆初始置换IP(也是一个置换表,将原先的位置改变),最后生成64位的密文,至此明文加密完成。 由上图可看出Li=Ri-1,Ri=Li-1⊕f(Ri-1,Ki)。

接下来讲这个f函数部分。 在这里插入图片描述f函数部分(也就是明文扩展置换): 可以看出明文加密过程只对左半部分加密,之后左右互换,再对左半部分加密,总计16次。 那么左半部分为32位,而子密钥为48位,他们怎么进行运算呢?下面我来讲讲。 1)由于只对左半部分加密,且加密之后再左右互换,所以前一步的明文的右半部分就是下一步明文的左半部分,即Li=Ri-1。 2)由于左半部分跟子密钥K位数不同,所以需要进行扩展置换E,使其与子密钥位数相同,才能进行异或运算(扩展置换其实就是将32的数据平均分为8部分,每部分4位,每部分添加2位,这就组成了48位)。 3)之后生成的48位数据与子密钥K进行异或运算。 4)再进行S盒压缩(其实就是将48位的数据平均分成8部分,每一部分减少2位,重新组成32位的数据)。 5)之后进行P盒置换(数据的位置发生相对移动),最终生成f(Ri-1,Ki)的最终数据。 6)再进行Li-1⊕f(Ri-1,Ki),生成的数据就是Ri。

解密过程与之类似,我们都知道一个数据与相同的数据进行两次异或,就能得到原始数据本身,解密就是使用的这个方法(可能大家忘了,可以拿两个运算一下,⊕为异或运算的意思)。 例如: P=1011,K=1101; 那么C=P⊕K=0110; 求得P=C⊕K=1011;

大致原理是: 加密过程: 密文C=明文P⊕密钥K; 解密过程: 明文P=密文C⊕密钥K;

DES算法的特点: 综合运用了许多次置换和替代技术,达到混淆和扩散的目的。 **扩散:将明文中的统计特性散布到密文中,使明文的每一部分影响密文中的多位。 **混淆:密钥和明文以及密文之间的依赖关系复杂化。 **采用乘积密码技术,将R0加密后的结果R1再作为L2的输入进行加密。

虽然DES算法很复杂,但是现在不到一个小时就能实现暴力破解,但是这为后面学习其他算法提供了基础。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有