分组密码——DES原理讲解

数据加密算法标准(Data Encryption Standard, DES)

1.设计思想

(1)初始和逆初始置换、置换P16次:把数据彻底打乱重排。
(2)选择置换E:数据彻底打乱重排;把32位输入扩展为48位。
(3)S盒:非线性变换(数据压缩),其他都是线性变换。所以保密的关键性是选择S盒。

解释:线性变换意味着可以将空间中的向量围绕零点进行旋转伸缩,但不能将其弯曲;非线性变换将空间进行了扭曲。
线性:满足齐次性,可加性( f(a+b)=f(a)+f(b),f(ka)=kf(a) ),反之非线性。

S盒的设计标准:
(1)非线性;
(2)任一输入位可以影响的输出位越多越好;
(3)当固定某一个位的输入时,我们希望S盒的4个输出位之间,其“0”和“1”个数之差越小越好。

缺点和不足:
A. 存在弱密钥和半弱密钥。
使子密钥全相同的密钥称为弱密钥,使子密钥中有部分相同的密钥成为半弱密钥。
B. 存在互补对称性。
在这里插入图片描述

2. 算法描述

分组长度:64bit
密钥长度:64bit,其中每8bit有一位奇偶校验位,因此有效密钥长度为56bit
DES结构

(1)初始置换/逆置换(根据表中数据变换64bit明文的位置)
在这里插入图片描述
两个置换互逆!

(2)迭代变换
DES的一轮迭代
右半部分原封不动作为本轮输出的64bit数据的左半部分
轮函数F(E,S,P,XOR)作用于右半部分

在这里插入图片描述
首先经过选择扩展运算E,32bit–>48bit,记为E(A),之后和子密钥Kj(j表示第几轮)进行异或运算。将所得数据分为8组,每组6bit,记为B1到B8,之后利用S盒进行代换
8个S盒如下:
在这里插入图片描述
在这里插入图片描述
对每个盒Si,6bit输入中第1bit和第6bit组成的二进制数确定Si的行,中间4位确定列。Si中行列位置的十进制数的二进制表示即为输出。

最后是置换运算P
在这里插入图片描述
(3)子密钥的生成
在这里插入图片描述
首先64bit的密钥K用置换选择(P-1)去掉第8,16,24,32,40,48,56,64位作为校验位,之后重新排列。将得到的数据分为两部分(28bit)C0,D0。Ci=LSi(Ci-1), Di=LSi(Di-1), 将每轮56bit数据用置换选择(PC-2)去掉第9,18,22,25,35,38,43,54位,同时重排剩下的48bit数据,输出作为Ki。
LSi:循环左移1位(i=1,2,9,16时)或2位(其他情况)。

3.解密

解密使用和加密相同的算法,只是子密钥的使用次序相反。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值