加载《Des算法作业报告》成功,点击此处阅读
首页 →文档下载

Des算法作业报告

以下为《Des算法作业报告》的无排版文字预览,完整内容请下载

/

Des算法作业报告

孙某某 ***0045

Des算法的原理分析:

什么是对称密码算法:

网络安全通信中要用到两类密码算法,一类是对称密码算法,另一类是非对称密码算法。对称密码算法有时又叫传统密码算法、秘密密钥算法或单密钥算法,非对称密码算法也叫公开密钥密码算法或双密钥算法。对称密码算法的加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。

对称算法又可分为两类。一次只对明文中的单某某(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组位进行运算,这些位组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64位  这个长度既考虑到分析破译密码的难度,又考虑到使用的方便性。后来,随着破译能力的发展,分组长度又提高到128位或更长。 常用的采用对称密码术的加密方案有5个组成部分(如图所示)

/

1)明文:原始信息。 2)加密算法:以密钥为参数,对明文进行多种置换和转换的规则和步骤,变换结果为密文。 3)密钥:加密与解密算法的参数,直接影响对明文进行变换的结果。 4)密文:对明文进行变换的结果。 5)解密算法:加密算法的逆变换,以密文为输入、密钥为参数,变换结果为明文。

算法原理:

DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。其中有极少数被认为是易破解的弱密钥,但是很容易避开它们不用。所以保密性依赖于密钥。

DES加密的算法框架如下:   首先要生成一套加密密钥,从用户处取得一个64位某某的密码口令,然后通过等分、移位、选取和迭代形成一套16个加密密钥,分别供每一轮运算中使用。

DES对64位(bit)的明文分组M进行操作,M经过一个初始置换IP,置换成m0。将m0明文分成左半部分和右半部分m0 = (L0,R0),各32位某某。然后进行16轮完全相同的运算(迭代),这些运算被称为函数f,在每一轮运算过程中数据与相应的密钥结合。

在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的48位数据,再将其压缩置换成32位。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16次。

经过16轮迭代后,左,右半部分合在一起经过一个末置换(数据整理),这样就完成了加密过程。加密流程如图所示。 /

实现DES加密算法

设明文为02468aceeca86420,密钥为0f1571c947d9e859,求对应的密文(明文左侧从1开始编号)并估计算法的运行时间。

代码详见附录

实现样例:

/

由此我们得出加密后的密文为:da02ce3a89ecac3b

算法的运行时间经多组测试为:30.40 us

结合DES算法,体会混乱、扩散的概念。

对相同秘钥的情况下输入改变1bit后的明文

秘钥:0f1571c947d9e859

原明文:02468aceeca86420

六轮后为密文:************************

明文:12468aceeca86420(改变第4位由0000→0001)

六轮后为密文:************************

与原明文六轮后相比有33位发生变化

明文:02468aceeca06420(改变第45位由1000→0000)

六轮后为密文:************************

与原明文六轮后相比有35位发生变化

明文:024682ceeca86420(改变第21位由1010→0010)

六轮后为密文:

************************

与原明文六轮后相比有31位发生变化

明文:02468acefca86420(改变第36位由1110→1111)

六轮后为密文:************************

与原明文六轮后相比有30位发生变化

明文:02468aceeca86421(改变第64位由0000→1111)

六轮后为密文:************************

与原明文六轮后相比有31位发生变化

以上五组数据可以看出des算法具有雪崩效应。

对相同明文的情况下输入改变1bit后的秘钥

明文:02468aceeca86420

(1)原某某:0f1571c947d9e859

六轮后为密文:************************

(2)秘钥:1f1571c947d9e859(改变第4位由0000→0001)

六轮后为密文:************************

与原某某加密六轮后相比有26位发生变化

(3)秘钥:0f1571c947d1e859(改变第45位由1001→0001)

六轮后为密文:************************

与原某某加密六轮后相比有30位发生变化

(4)秘钥:0f1579c947d9e859(改变第21位由0001→1001)

六轮后为密文:************************

与原某某加密六轮后相比有28位发生变化

(5)秘钥:0f1571c957d9e859(改变第36位由0100→0101)

六轮后为密文:************************

与原某某加密六轮后相比有39位发生变化

(6)秘钥:0f1571c947d9e85d(改变第62位由1001→1101)

六轮后为密文:************************

与原某某加密六轮后相比有32位发生变化

以上五组数据可以看出des算法具有雪崩效应。

分析:

首先由实验结果表明,DES算法具有很好的雪崩效应,包括明文和密钥的雪崩效应。在密钥相同的情况下,1比特的明文差异能够产生32比特的密文差异;在明文相同的情况下,1比特的密钥差异能够产生31比特的密文差异。

原轮函数正常加密:

明文为02468aceeca86420,密钥为0f1571c947d9e859

加密后为密文:************************

由此我们得出加密后的密文为:da02ce3a89ecac3b

删除E扩散:

六轮后:

************************

六轮改变28bit;

加密后密文:

************************

删除E扩散后,相对于原轮函数加密的结果来看,改变了36bit,由此可见采取E扩散分为多个子S盒,将多组的数据去调取多组的s盒进行变换,由此扩大了其复杂度,很好的保证了雪崩效应的产生。

删除S盒

六轮后:************************

六轮改变34bit;

加密后密文

************************

删除S盒后,相对于原轮函数加密的结果来看,改变了29bit,没有S盒,对于单纯的P置换只有置换的效果和加密的效果,多了S盒加密有了很大的不确定性,使其更加的混乱。

删除P置换

六轮后:

************************

六轮改变28bit;

加密后:

************************

删除P置换后,相对于原轮函数加密的结果来看,改变了28bit,由此可见P置换很好的保证了雪崩效应的产生。

经过多组测试即对不同情况分别进行多组同秘钥不同明文,和多组同明文文不同秘钥的测试来看,可以发现对于des算法来讲,每一轮次和每一环节的设计都是为了增大熵,每一环节都在使加密更趋向于无序性,而因为多轮循环的愿因,以及多个环节,每次加密时对于1bit的变化都会发生在32bit左右波动的变化,des是雪崩效应的一种很好的展现形式。

附录【1】

#include

#include

#include"tables.h"

using namespace std;

int n[4];

void Hex2Bin(int b, int* arr, int a);

void print_s(int* arr);

void opplain(string plain, int* plaintext);

void opkey(string key, int* Key);

void substitute(int* plaintext, int* Key, int* cipher_1, int* r, int* l, int* keyl, int* keyr, int* key_0);

void Encrypt(string plain, string key, int* plaintext, int* Key, int* cipher_1, int* r, int* l, int* keyl, int* keyr, int* key_0);

int main(){

int plaintext[64];

int Key[64];

int cipher_1[64];

int l[32], r[32];

int keyl[28], keyr[28];

int key_0[56];

string plain;

string key;

cout 请点击下方选择您需要的文档下载。

  1. TDOA定位的Chan算法MATLAB源代码
  2. 二级公共基础知识复习资料
  3. TSP的几种求解方法及其优缺点
  4. 密码学基本概念
  5. 8XX操作系统用户手册
  6. 硕士研究生入学考试自命题科目 考试大纲
  7. 动态路由选择算法实验报告4模板
  8. 齐治堡垒机普通用户操作指引
  9. win10-VPN使用手册_最新
  10. 如何设置人脸和指纹***>
  11. 学习强国试题
  12. 数据库知识摘要
  13. 计算机二级ACCESS历年选择题汇总
  14. 《数据结构(c语言版)》知识点概括
  15. 北师大版必修三《循环结构》课件
  16. 算法2伪代码

以上为《Des算法作业报告》的无排版文字预览,完整内容请下载

Des算法作业报告由用户“k840726”分享发布,转载请注明出处
XXXXX猜你喜欢
回顶部 | 首页 | 电脑版 | 举报反馈 更新时间2021-06-01 05:05:07
if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/41/bc/64859.html'}ipt>if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/41/bc/64859.html'}ipt>