首页 > 其他分享 >2轮DES差分分析

2轮DES差分分析

时间:2024-06-13 16:21:44浏览次数:21  
标签:分析 DES 差分 明文 获取 密钥 密文

一、差分分析

上图是2轮DES的框架图。是已知的,试图找出B和C的差分值:

同样,为了计算方便,将L0等于L0*,那么,差分值就变成:

二、代码实现
如果大家对代码实现感兴趣的话,可以根据2轮DES差分分析原理,对1轮差分分析代码做出调整,完成2轮差分分析代码实现。这里把2轮DES差分分析的过程以视频的形式呈现给大家:
第一步,我们创建了一个2轮的DES用来接下来的差分分析,这里将初始密钥和子密钥都打印了出来,主要是为了学习过程中将差分攻击结果和正确密钥进行对比,通过观察密钥的一些细节变化,增加大家对DES的整个差分攻击过程的理解和印象。接下来的差分分析过程中除了生成用于差分分析的明密文对时需要使用的这一步生成的密钥之外,其他操作皆不使用。
第二步,进行5次差分分析,每次都生成两对明密文对,用于差分分析。差分分析的结果为密钥猜测列表,随着差分分析次数不断累加,具体的差分分析过程为:
1、将两对明密文对进行分组,明文1使用(L0,R0)表示,明文2使用(LL0,RR0)表示,编号的最后一位表示第几轮数据,因此我们使用(L2,R2)表示密文1,(LL2,RR2)表示密文2。
2、将密文分组中的L2和LL2 做E盒运算,扩充为48bit,做异或运算获取48bit大小的第2轮DES加密输入差分,然后将差分结果6bit一组分成8组。
3、将R2和RR2异或,获取32bit第2轮DES加密输出差分,将差分结果4bit一分组分成8组。
4、输入差分第一组对应S1盒输入差分,输出差分第一组作为S1盒输出差分,输入差分第二组对应S2盒输入差分,输出差分第二组作为S2盒输出差分,以此类推,通过每个S盒的输入输出差分关系表获取每个S盒可能的输入值(明文异或子密钥后的值,这里用B表示)
5、将L2或者LL2做E盒运算,获取48bit输入明文,然后将48bit明文6it一分组分为8组,对应8个S盒。
6、将上一步获取的8组6bit输入明文中第一组明文跟和S1盒对应的所有B值依次异或,获取2轮S1盒的密钥猜测列表,依次类推,最终获取8个S盒的所有第2轮密钥猜测列表。
将以上操作进行5次累加操作后,获取一个比较大的密钥猜测列表:
第三步,对已获取的密钥猜测列表进行统计分析,统计列表共分为8组,默认每一组中出现频率最高的为正确密钥,将每一组中猜测的正确密钥转化为6bit二进制后再转化为16进制,依次拼接,获取48bit的16进制串,作为猜测的第二轮DES加密子密钥。
第四步,对上一步生成的48bit子密钥剩余8bit进行穷尽,然后置换为64bit,获取初始密钥,这个时候大家会发现我们猜测的初始密钥跟实际的初始密钥个别位置并不相同,不着急,我们接着进行测试。
第五步,使用第一步的密钥加密获取1000对明密文,然后使用第四步我们猜测获取的初始密钥对每一个密文进行解密,发现解密结果正确率100%,大家可以思考这是为什么。

欢迎关注赛格睿特的伙伴们在评论区留言想看的专题和想要探讨的内容哦!

标签:分析,DES,差分,明文,获取,密钥,密文
From: https://www.cnblogs.com/sgrtsec/p/18246156

相关文章

  • Linux时间子系统1:gettimeofday和clock_gettime实现分析
    1.Linux用户态获取时间的函数a.秒级别的时间函数:time和stimetime和stime函数的定义如下:#include<time.h>time_ttime(time_t*t);intstime(time_t*t);        time函数返回了当前时间点到linuxepoch的秒数(内核中timekeeper模块保存了这个值,timekeeper->x......
  • 使用Visual Studio分析.NET Dump文件
    思维导航前言什么是Dump文件?编写一段内存泄漏的代码查看程序运行情况并创建Dump文件使用VisualStudio分析Dump更多VisualStudio编程效率提升技巧DotNetGuide技术社区交流群前言内存泄漏和高CPU使用率是在日常开发中经常遇到的问题,它们可能会导致应用程序性能下降......
  • OpenFlow协议分析实践
    一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制。二、实验环境下载虚拟机软件OracleVisualBox;在虚拟机中安装Ubuntu20.04Desktopamd64,并完整安装Mininet;三、实验要求(一)基本......
  • python数据分析-笔记本内存和价格预测分析
    一、背景和研究意义计算机已成为现代社会不可或缺的工具,广泛应用于个人生活、学术研究和商业领域。随着科学技术的飞速发展,计算机不仅在性能上不断突破,在种类和品牌上也呈现出多样化和差异化。无论是办公、娱乐、学习还是创作,人们都离不开电脑的帮助。然而,随着电脑市场的不断......
  • Python文档处理操作(1)——统计分析文档内容
    -----案例1:要求-----读取文件data1.txt的内容,统计其中所有不同字符的数量,并输出结果。-----案例1:代码示例-----f=open('data1.txt')#打开名为'data1.txt'的文件,并将文件对象赋值给变量fls=[]#初始化一个空列表ls,用于存储文件中出现的不同字......
  • python数据分析-房价数据集聚类分析
    一、研究背景和意义随着房地产市场的快速发展,房价数据成为了人们关注的焦点。了解房价的分布特征、影响因素以及不同区域之间的差异对于购房者、房地产开发商、政府部门等都具有重要的意义。通过对房价数据的聚类分析,可以深入了解房价的内在结构和规律,为相关决策提供科学依据......
  • PlugLink:让数据分析与工作流无缝连接(附源码)
    PlugLink:让数据分析与工作流无缝连接引言数据分析和自动化工作流已成为各个企业和个人提高效率的关键手段。今天,我要介绍一款名为PlugLink的工具,它不仅能帮助你轻松进行数据分析,还能将这些分析结果无缝连接到你的工作流中,实现真正的全自动化处理。本文将详细介绍如何使用......
  • Wireshark网络分析从入门到实践【1.2】
            如果在这个期间你没有从事过其他的网络活动(例如在线看视频、下载等),那么现在最上方的也就是流量最大的对话就是在你的浏览器和www.wireshark.org之间建立的。        从图1-10中可以看出来,104.25.219.21与192.168.1.102之间对话产生的流量最多为21......
  • 龙哥量化:通达信量比分析指标公式源码
    如果您需要代写公式,请联系我。龙哥QQ:591438821龙哥微信:Long622889M1:=5;量比:vol/REF(MA(VOL,M1),1)*10,LINETHICK0,COLORYELLOW,NODRAW;二十日量比:SUM(VOL/REF(MA(VOL,M1),1)*1,20),NODRAW;一十日量比:SUM(VOL/REF(MA(VOL,M1),1)*1,10),NODRAW;DRAwrECTREL(400,0,635,320,RG......
  • 利用Wireshark抓包分析DNS域名解析过程
    一、DNS协议概述  DNS协议也可以称为DNS服务,全称是DomainNameSystem,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的。从DNS的名字我们就可以知道,它提供域名映射到IP地址的服务。二、实验目的掌握DNS域名解析过程熟悉DNS报文格式三......