密码学--DES算法(图形化界面)python

本文介绍了DES加密算法的Python实现,包括加密过程、Sbox差分分析以及在密钥和明文固定情况下的位变化统计。提供了图形化界面展示加密步骤和差分计算结果,同时展示了明文或密钥改变时输出密文位数的平均变化情况,证实了DES的安全特性。
摘要由CSDN通过智能技术生成

要求

  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')

        #置换运算p
        code_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、密钥改变明文固定
在这里插入图片描述

源码

链接
想要的也可以私我

禁止转载

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值