网络安全_密码学实验_对称加密算法DES

网络安全_密码学实验_对称密码非对称密码_加密算法DES RSA


一、实验环境

PyCharm 2019.2.4 (Professional Edition) & Python 3.7

二、对称加密DES

1.理解DES算法原理

在这里插入图片描述

2.加密过程

2.1首先第一步要从文件中读取明文;

Python中内置了很多的库,在这里直接调用open函数来读取文本,选择r模式,表示只读操作
在这里插入图片描述

2.2 对明文进行字符转换成ASCII码,再转换成比特流,每64位分一组,最后不足的用0补齐
在这里插入图片描述在这里插入图片描述

2.3 对密钥进行字符转换成ASCII码,再转换成比特流,每64位分一组,最后不足的用0补齐

在这里插入图片描述

2.4 对每组的64位比特进行IP置换
这一步比较简单,将比特流进行IP置换,核心其实就是置换的IP盒,将明文比特流中的每一位,按照IP盒中的顺序,重新排序:即盒中第x位数字为y,表示将64一组的明文比特流的第y位,放在x位。
在这里插入图片描述

2.5 生成子密钥,得到16个子密钥,封并且存放在列表中待使用。
密钥是按照64位一组进行的划分,有64位,其实有效位仅为56位,需要通过PC-1盒先选择出有效的该56位:和明文一样,这里也需要分成左右两个部分,每个子部分是28位对该28位,进行重复左移,第LS1,LS2,LS9,LS16次是循环左移1位变换,其他为循环左移2为变换这里将循环左移的位数,写在一个列表SHIFT中,方便调用,每一轮左移,都会得到一个56位子密钥,需要再通过PC-2选择出最终的48比特的子密钥。原理图如下
在这里插入图片描述在这里插入图片描述

2.6 将明文分成L,R两组,各32位。对得到的L,R进行16轮的Feistal变换
在这里插入图片描述

其中,F函数是DES算法最核心的部分,在此,讲解一下一轮变换的具体步骤:
在这里插入图片描述

在这里插入图片描述1) 首先使用E盒,将明文32bit拓展为48bit,
在这里插入图片描述

  1. 然后与子密钥进行异或运算
    在这里插入图片描述

  2. 得到的结果按每组6位分为8组;再经过S盒,从6位中选择出4位,得到32bit
    在这里插入图片描述

  3. 经过P盒置换后,得到最终32位结果
    在这里插入图片描述

2.7 再使用IP-1函数将L,R合并为密文比特流

在这里插入图片描述
2.8 最后将密文比特流转换成密文字符保存。
在这里插入图片描述在这里插入图片描述

3.解密过程

关于解密过程,和加密过程原理是相同的,仅仅是密钥选择顺序不同。如下图:
在这里插入图片描述

三、运行结果

运行本程序,显示功能清单,选择使用DES加密或者DES解密。首先,选择1,然后输入明文(明文长度不受限制),接着输入密钥,回车,显示加密后的内容。
在这里插入图片描述在这里插入图片描述然后,选择2,接着输入密钥,回车,显示明文。

在这里插入图片描述

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手可摘辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值