DES加解密原理

本文详细介绍了DES加密算法的步骤,包括初始置换IP、16轮迭代变换、子密钥产生器和逆初始置换。在每轮迭代中,经过选择扩展、密钥加密、选择压缩和置换运算。解密过程则与加密类似,子密钥使用次序相反。同时,文中还提到了DES算法的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DES的加密

DES算法是典型的分组密码,加密前先将明文编码表示后的二进制序列划分成长度为64b的分组,DES算法的密钥也是长度为64b的二进制序列,密钥中第8、16、24、32、40、48、56、64位为奇偶校验位。
DES算法的基本步骤:
*1 初始置换IP
*2 16轮迭代处理
*3 互换左、右32位
*4 初始逆置换IP-1

1、初始置换IP

初始置换IP是将64b的明文进行位置重排,通过IP运算得到一个乱序的64b明文组,置换后的数据平均分为左右两段,用L和R来表示,这两部分数据是下一代迭代变换的初始输入。

2、迭代变换

每轮迭代只对右边的32b进行一系列加密变换F,加密变换包括选择运算E、密钥加密运算、选择压缩运算S,置换运算P,在一轮迭代即将结束时,把上一轮左边32b与本轮经加密变换F得到的32b进行模二相加,作为下一轮迭代时右边的段,并将上一轮右边的未经变换的段直接送到左边寄存器中作为下一轮迭代时左边的段。
16轮迭代结束后,再将所得的左、右长度相等的L16和R16进行交换得到64b数据。

(1)选择扩展运算E

将输入的32b拓展成48b输出,扩展方法是重复某些位置上的元素,共有16个位置上的元素被读了两次

(2)密钥加密运算

将子密钥产生器输出的子密钥K与选择扩展运算E输出的48b数据按位模二相加

(3)选择压缩运算S

48比特自左至右分成八组,每组6b,然后送入8个S盒。每个S盒能够将6b的输入转化为4b的输出(将输入的第一位和第六位组成的二进制数值作为横坐标,其它4b是纵坐标,查询S盒表得到最终数值),最后得到的十进制数均用二进制表示

(4)置换运算

对8个盒子中的数据进行坐标变换

3、子密钥产生器

DES加密过程共涉及16轮迭代,每轮使用一个不同的48位子密钥,共需16个子密钥,这些子密钥由初始输入的64位密钥产生,初始密钥中有8位奇偶校验位。通过16轮置换选择和每轮左移位数加一得到16个子密钥

4、逆初始置换

利用逆初始置换表得到最后的密文。

二、DES算法解密

密钥与加密的密钥相同,只是子密钥的使用次序相反,得出最后的64b的明文

三、DES加解密算法代码

#初始置换表
#逆初始置换表
#选择扩展运算表
#8个S盒表
#置换选择PC-1表
#置换选择PC-2表
#移位次数表
#置换
def table(data,table1)
    test = []    
    for i in range(0, len(table1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值