DES算法学习笔记

在这里插入图片描述

**DES(Data Encryption Standard,数据加密标准)**是一种对称密钥算法,用于加密和解密数据。它最初由IBM开发,并在1977年被美国国家标准与技术研究院(NIST)采纳为联邦信息处理标准(FIPS),用于非机密政府通信以及商业应用。

一. 算法流程概述

DES算法属于对称加密算法中的分组加密算法。其中密钥长度为64位,56位为有效位,其余8位为校验位。明文数据块的大小为64位。算法整体可分为3步,分别为初始置换、迭代运算和末置换。算法的流程如下图所示。
在这里插入图片描述

二. 算法流程详解

1. 初始置换

初始置换即按照特定的规则,将明文数据块的64位二进制位重新排列。其置换表,即 I P IP IP表如下
在这里插入图片描述
如何根据表格进行置换?将原数据块的第58位二进制位重置在第一位,将将原数据块的第50位二进制位重置在第二位,将原数据块的第42位二进制位重置在第三位…

2. 迭代运算

2.1 E扩展

由算法流程图可知,64位明文数据块被分为左右两部分,每部分32位。 E E E扩展的目的则是将32位的右半部分扩展为48位。E表如下
在这里插入图片描述
E E E表的使用方法和 I P IP IP表相同

2.2 异或

E E E扩展后的右半部分和48位轮密钥进行异或运算。密钥的生成放在文章的后面阐述。

2.3 S盒

异或运算后,将运算结果进行S盒压缩处理。
在这里插入图片描述

在这里插入图片描述
S S S表的使用方法与前面的表格不同。将48位分为8块,每块6位。第一块使用第一个S盒,第二块使用第二个S盒,以此类推,将每块的6位中的第1位和第6位组合成一个两位的二进制数,用来作为行值;将每块的6位中的第2位、第3位、第4位和第5位组合成一个四位的二进制数,用来作为列值,用取得的行值和列值到 S S S表中取值,得到一个四位的二进制数,这样就把6位二进制压缩成了4位二进制。输入的48位二进制也就被压缩成为了32位二进制。

2.4 P置换

S S S盒运算后,进行 P P P盒置换。
在这里插入图片描述
P P P盒的使用方法与 I P IP IP表和 E E E表的使用方法一致。

P P P盒置换后,需要和明文数据块的左半部分进行异或运算,运算完成后,一轮迭代运算结束。

将左右部分互换,进行下一轮运算。需要注意的是:第16轮,也就是最后一轮,左右部分没有进行交换。

3. 末置换

经过16轮的迭代运算后,进行末置换。
在这里插入图片描述
置换方法和初始置换一致。

三. 密钥生成

前文提到,密钥为64位,参与运算的为56位,其中的具体过程如下
在这里插入图片描述

置换选择1

将64位密钥进行置换选择1,结果为56位。置换表如下
在这里插入图片描述
和前文涉及的表格相同,将原密钥块的第57位二进制位重置在第一位,原密钥块的第49位二进制位重置在第二位,从表中可知,原密钥块的第8、16、24、32、40、48、56和64不在表中,不参与运算。

循环移位

置换选择1运算后,将结果分为左右两部分,每部分28位,分别进行循环左移,循环左移的位数取决于DES算法流程中的16轮迭代运算的迭代轮数,具体如下表
在这里插入图片描述

置换选择2

循环左移后,将左右密钥块合并,进行置换选择2,置换表如下
在这里插入图片描述
置换方法同置换选择1。

参考资料

https://csrc.nist.gov/files/pubs/fips/46-3/final/docs/fips46-3.pdf

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值