DES加解密(详细的加密流程)

本文详细介绍了DES加密算法的工作流程,包括初始置换IP、秘钥初始化、16轮迭代等步骤,以及解密过程。DES算法使用64位明文,56位密钥,通过一系列置换和异或操作实现数据加密,最终得到64位密文。
摘要由CSDN通过智能技术生成


介绍

IBM公司成立了研究新密码体制的小组,由Tuchman博士领导,Horst. Feistel进行设计完成了Lucifer 密码。美国国家标准局NBS(美国标准技术研究所NIST的前身)采用了改进的Lucifer算法。1980 年美国国家标准协会ANSI正式采用该算法作为数据加密标准(Data Encryption Standard, DES).
DES分组长度为64比特,使用56比特密钥对64比特的明文串进行16轮加密,得到64比特的密文串。其中,使用密钥为64比特,实际使用56比特,其中8比特用作奇偶校验。如下DES算法原理图所示:
在这里插入图片描述

下面我会分别介绍各个模块


一、置换(IP置换)

1.初始置换

置换其实可以简单地理解成【将明文打乱】——将原来的64位二进制位重新排序。不同的置换中,每一位的移动情况都是不一样的。
首先你要知道:DES加密中所涉及的各种置换,都有一张置换表与其对应。置换表是用来表示:加密后,每一位在进行交换后,分别移动到哪一位上。
如下图所示:
在这里插入图片描述

上图置换表一共有64个数,初始置换IP表达的含义就是,将原来64位明文数据的第57位换到第1位,依次类推
置换表中的第2个数是49:即将输入的第49位将被换到第2位

……

置换表中的第64个数是04:即将输入的第4位将被换到第64位

二、具体步骤

1.秘钥初始化

DES处理比特,或者说二进制数字,我们知道,每四个比特构成一个十六进制数。DES加密一组64位的信息,也就是16个16进制数。为了完成加密,DES秘钥获取:

我们取16进制秘钥K为:

K = 133457799BBCDFF1

我们可以得到他的二进制形式(1为0001,3为0011,依次类推,并且将每8位写成一组。)

K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001

这里虽然得到64位秘钥,但是我们需要去掉为8的整数倍的奇偶校验位,共8个,这样得到56位秘钥。

这个64位的秘钥首先根据表格PC-1进行变换。

表PC-1
在这里插入图片描述
由于上表中第一个元素为57,这将使原秘钥的第57位变换为新秘钥K+的第一位。同理,原秘钥的第49位变换为新秘钥的第2位,,,原秘钥的第4位变换为新秘钥的最后一位,注意原秘钥中只有56位会进入新秘钥,上表也只有56个元素。
比如,对于原秘钥:

K = 0001001 0011010 0101011 0111100 1001101 1011110 1101111 1111000

我们将得到56位新秘钥:

K+ = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111

然后,我们将这个密钥拆分为左右两个部分,C0和D0,每半边都有28位。

比如,对于新密钥,我们得到:

C0 = 1111000 0110011 0010101 0101111
D0 = 0101010 1011001 1001111 0001111

2.16轮迭代

DES算法需要进行16轮的迭代运算(需要16个子密钥)。

每一个迭代运算生成一个子密钥。
16轮迭代运算(经过16轮相同运算):进行某个函数运算

在这里插入图片描述<

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值