密码学--DES算法python

  • 要求
  • 原理
  • 主要功能界面
  • 具体功能代码
  • 源码

要求

  1. 网上搜索DES的源代码。
  2. 利用DES源代码实现下面功能:
  3. 给定某个Sbox的输入差分情况下,计算所有输入对和所有Sbox输出差分的分布情况
  4. 统计DES算法在密钥固定情况,输入明文改变1位、2位,。。。64位时。输出密文位数改变情况。
  5. 统计DES算法在明文固定情况,输入密钥改变1位、2位,。。。64位时。输出密文位数改变情况。
    为了具有客观性,2,3小题需要对多次进行统计,并计算其平均值。

异或加密算法

原理

差分:

1、公式:Sj(Bj)⨁Sj(Bj⨁ΔBj)=ΔSj的Bj的集合。

Sj()为Sbox运算,ΔBj为输入差分(6位),ΔSj为输出差分(4位),Bj为所有可能的输入。

2、Sj(Bj⨁ΔBj)
具体做法:遍历4位的二进制数ΔSj,然后再遍历6位的二进制数Bj,与输入差分ΔBj先进行异或运算,然后进行Sbox运算

3、进行异或运算Sj(Bj)⨁Sj(Bj⨁ΔBj)

4、判断结果是否与ΔSj相等,如果相等的话就把此时的Bj保存下来

5、将Bj全部输出,得到结果

(代码在下面)

明文固定密钥改变,密钥改变明文固定
跟书里差不多,简单描述下如何遍历:

run_code=''output=''key_code=des.getkey(key)#取出明文左右32位code_l=code[0:32]code_r=code[32:64]#print('L0:'+code_l)#print('R0:'+code_r)#16次迭代for j in range(16):#64左右互换code=code_r#右边32位扩展置换code_r=des.functionE(code_r)#print('选择运算:'+code_r+'\n')#获取本轮密钥key_y=key_code[j]#异或code_r=des.codeyihuo(code_r,key_y)#print('子密钥加:'+code_r+'\n')#s盒代替code_r=des.functions(code_r)#print('S盒:'+code_r+'\n')#置换运算pcode_r=des.functionp(code_r)#print('p置换:'+code_r+'\n')#异或code_r=des.codeyihuo(code_l,code_r)code_l=code#print('L'+str(j+1)+':'+code_l+'\n')#print('R'+str(j+1)+':'+code_r+'\n')#32互换code_l,code_r=code_r,code_l run_code=code_l+code_r#逆初始置换output+=des.nichange(run_code)return output

主要功能界面

1、图形化界面

一共有4个功能,分别是加密、sbox差分,明文固定密钥改变,密钥改变明文固定
(全部功能对应书本相关图)
2、点击开始加密

左边是具体过程(点击可进入相应步骤具体内容),右边是详细过程,包含加密明文密钥密文等等信息
点进具体过程:

对应书本P64~P70的密钥扩展和加密过程图,无论任何数据都和书本一样

3、sbox差分
对应题目1:给定某个Sbox的输入差分情况下,计算所有输入对和所有Sbox输出差分的分布情况

对应书本P137,可以看到结果与书上完全对的上

同时还有多个sbox可以选择

4、明文固定密钥改变,密钥改变明文固定
对应题目2、3:统计DES算法在密钥固定情况,输入明文改变1位、2位,。。。64位时。输出密文位数改变情况。
3.统计DES算法在明文固定情况,输入密钥改变1位、2位,。。。64位时。输出密文位数改变情况
同时还弄了多次进行统计,并计算其平均值
因为功能相似我放在了同一个图形化界面

明文固定密钥改变:

密钥改变明文固定:

可以看到每改变一位对应要改变多少位,而且平均下来都是在32左右
无论是密钥固定、明文改变,还是明文固定、密钥改变;无论每次改变几位,最终密文的改变位数都为在32左右,也即总的64位的一半。每次都只变化50%的位数,使得企图通过该改变密钥或明文、根据密文变化来分析的攻击者根本难以分析出结果

具体功能代码

1、加密
参考至书本P56~60,这里截取了主要函数图

2、差分
对应书本书本P136~137,这里截取了主要函数图

3、明文固定密钥改变

同上:
4、密钥改变明文固定

源码

链接
想要的也可以私我

禁止转载

密码学--DES算法(图形化界面)python相关推荐

  1. 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT)图形化界面(JavaFx)

    页面置换算法图形化界面 前言 运行效果 源码 FIFO LRU OPT FXML界面 控制器 启动类 前言 其实以前操作系统实验的时候我写过了三份了:(命令行) 页面置换算法 (FIFO.LRU.OP ...

  2. python使用界面-(八)Python 图形化界面设计

    3.1.文本输入和输出相关控件:文本的输入与输出控件通常包括:标签(Label).消息(Message).输入框(Entry).文本框(Text).他们除了前述共同属性外,都具有一些特征属性和功能. ...

  3. 零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)

    1.图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI). 即通过鼠标对菜单.按钮等图形化元素触发指令,并从标签.对话框 ...

  4. python界面-(八)Python 图形化界面设计

    3.1.文本输入和输出相关控件:文本的输入与输出控件通常包括:标签(Label).消息(Message).输入框(Entry).文本框(Text).他们除了前述共同属性外,都具有一些特征属性和功能. ...

  5. python中的图形界面设计_python图形化界面设计(tkinter)一全面介绍

    3.3.单选按钮:(Radiobutton)是为了响应故乡排斥的若干单选项的单击事件以触发运行自定义函数所设的,该控件排除具有共有属性外,还具有显示文本(text).返回变量(variable).返回 ...

  6. Python 图形化界面设计

    1.图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单.按钮等图形化元素触发指令,并从标签.对话框等 ...

  7. python图形界面设计代码_(八)Python 图形化界面设计

    3.1.文本输入和输出相关控件:文本的输入与输出控件通常包括:标签(Label).消息(Message).输入框(Entry).文本框(Text).他们除了前述共同属性外,都具有一些特征属性和功能. ...

  8. python图形化界面开发工具,python如何做图形化界面

    Python tkinter能做出好看的图形界面么 谷歌人工智能写作项目:小发猫 python 图形化界面 使用wxpython,import wxapp = ()win = wx.Frame(Non ...

  9. python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码)

    python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码) 最近学校实训,用两天时间做了一个python小程序*机房收费管理系统*,一款基于tkinter使用p ...

最新文章

  1. 机器学习 LR getA()
  2. 最先进的目标检测器竟对大象“视而不见”
  3. hadoop hive hbase 集群搭建
  4. CV之Hog+HamMingDistance:基于Hog提取和汉明距离对比的应用—图像相似度对比之for循环将多个成对图片依次对比并输出相似度
  5. Android空间WebView和ViedeoView的使用
  6. 为什么线粒体DNA突变率高?
  7. DATAGUARD配置错误的解决日志
  8. ABB 机器人 通信指令(人机对话):
  9. C# 7.1先睹为快(第一部分)
  10. 解决导入myeclipse的项目注释和中文是乱码
  11. c防止随机数重复_铝及铝模板等焊接常见缺陷、和防止措施12招
  12. skimage exposure模块解读
  13. stm32 工业按键检测_STM32单片机按键消抖和FPGA按键消抖大全
  14. 百度离线地图示例之一:地图展示
  15. mysql 删除分区报错_MySQL分区管理
  16. android 发送短信的两种方式
  17. 软件测试零基础如何快速入门 ?这里有全网最详细的学习资料
  18. 数字化浪潮下 哪些银行业务或“生变”
  19. 毕业论文必备技巧:Word页脚及页眉设置
  20. redis工具redis Desktop Manager使用

热门文章

  1. 微信小程序使用echarts不显示的问题
  2. python列表数据求和_列表求和python
  3. HPA:人类蛋白图谱数据库
  4. [Mugeda HTML5技术教程之6]添加元素
  5. [SDK]Unity接入Facebook SDK获取用户头像
  6. Java学习--多线程
  7. 数据库种类大全及区别
  8. 淘宝、1688、京东、拼多多,抖音五个平台的区别分析
  9. 宽带接入网络的形式(软考网工知识点总结)
  10. 详解npx的使用教程