DES算法实现及分析论文.docx

上传人:b****6 文档编号:2774396 上传时间:2022-11-15 格式:DOCX 页数:13 大小:73.89KB
下载 相关 举报
DES算法实现及分析论文.docx_第1页
第1页 / 共13页
DES算法实现及分析论文.docx_第2页
第2页 / 共13页
DES算法实现及分析论文.docx_第3页
第3页 / 共13页
DES算法实现及分析论文.docx_第4页
第4页 / 共13页
DES算法实现及分析论文.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

DES算法实现及分析论文.docx

《DES算法实现及分析论文.docx》由会员分享,可在线阅读,更多相关《DES算法实现及分析论文.docx(13页珍藏版)》请在冰豆网上搜索。

DES算法实现及分析论文.docx

DES算法实现及分析论文

 

项目报告:

DES算法的实现与分析

 

组员:

柴彦廷121041302

雨潇121041316

唐均121041328

王森121041333

王钰121041334

熊枫121041337

 

1.引言2

2.项目研究2

2.1框架设计、模块划分3

2.2.DES加密技术简介3

3.方案设计3

3.1明文的输入与转化4

3.2S盒及P盒原理简介4

3.3子密钥的产生5

3.416轮循环加密5

4.仿真结果输出5

5.DES算法特点总结8

6.参考文献8

7.程序代码9

 

一、引言

项目的选题目的和意义:

DES采用分组乘积密码体制,它是由IBM开发,是对早期被称为Lucifer 密码体制的改进。

DES在1975年3月17日首次在联邦记录中公布,而且声明对比算法征求意见。

到1977年2月15日拟议中的DES被采纳为“非密级”应用的一个联邦标准。

 

最初预期DES作为一个标准只能使用10~15年,然而,出于种种原因,可能是DES还没有受到严重的威胁,事实证明了DES要长寿得多。

在其被采用后,大约每隔5年被评审一次。

DES的最后一次评审是在1999年1月。

但是,随着计算机计算能力的提高,由于DES的密钥过短,仅有56位,对DES的成功攻击也屡见报端。

 尽管如此,DES的出现是现代密码学历史上非常重要的事件。

它对于我们分析掌握分组密码的基本理论与设计原理仍然具有重要的意义。

本课题是在Matlab的环境下对DES算法的实现和分析,探究DES算法的原理。

二、项目研究

2.1、框架设计,模块划分:

2.1.1、总体分为三个模块:

1、数据初始化:

明文的输入(字符串形式)及转化为数字串。

2、产生子密钥

3、16轮循环加密及密文输出

2.1.2、总体流程图:

2.2.DES加密技术简介:

DES是一个16轮的Feistel型结构密码,它的分组长度为64比特,用一个56比特的密钥来加密一个64比特的明文串,输出一个64比特的密文串。

其中,使用密钥为64比特,实用56比特,另8位用作奇偶校验。

加密的过程是先对64位明文分组进行初始置换,然后分左、右两部分分别经过16轮迭代,然后再进行循环移位与变换,最后进行逆变换得出密文。

加密与解密使用相同的密钥,因而它属于对称密码体制。

假设输入的明文数据是64比特。

首先经过初始置换IP后把其左半部分32比特记为L0,右半部分32比特记为R0,即成了置换后的输入;然后把R0与密钥产生器产生的子密钥k1进行运算,其结果计为f(R0,k1);再与L0进行摸2加得到L0⊕f(R0,k1),把R0记为L1放在左边,而把L0⊕f(R0,k1)记为R1放在右边,从而完成了第一轮迭代运算。

在此基础上,重复上述的迭代过程,一直迭代至第16轮。

所得的第16轮迭代结果左右不交换,即L15⊕f(R15,k16)记为R16,放在左边,而R15记为L16放在右边,成为预输出,最后经过初始置换的逆置换IP-1运算后得到密文。

3、方案设计:

3.1明文的输入与转化为数字串

由于输入的明文和密钥都是16进制表示的字符串格式,因此在输入后要将字符串转换为01数字串。

程序:

MB=[];%定义变量MB

fori=1:

16%开始循环

Mi=M(i);%将输入字符串M的第i位赋值给M(i)

MBi=['0000',dec2bin(hex2dec(Mi))];%将16进制数转化为2进制

MBi=MBi(end-3:

end);

MBi=[str2num(MBi

(1)),str2num(MBi

(2)),str2num(MBi(3)),str2num(MBi(4))];%字符串矩阵被转换成一个数值矩阵

MB=[MB,MBi];

end

M=MB;

3.2S盒及P盒原理简介

S盒运算:

在密码函数f (R , k)中有8个S盒,称为8个不同的选择函数,分别用(S1、S2…S8)表示。

每个S盒都是将6位作为输入,得到一个4位块作为输出。

 

以S1为例,若B是6位的一个块,则S1(B)计算如下:

B的第一和最后一位表示从0到3之间的二进制数,令该数为i ;而B的中间4位表示从0到15之间的二进制数,令该数为j;在该表S1中查第i行j列的数,它是从0到15之间的一个数,且唯一地由4位块代表,则该块就是输入B的S1的输出S1(B)例如对于输入为101000而言,行是10,即第2行。

而列是由0100确定,即第5列,S1盒的第2行与第5列的交叉处即为B,因而输出为1101,因此1101就是S 盒S1在输入为101000时的输出。

P盒运算:

置换函数P是通过输入块的位,从32位输入中得到32位的输出。

函数P的输出P(C),是通过C的第16位为P(C)的第1位,取第7位为P(C)的第2位,……,取第25为P(C)的第32位。

现在我们就令S1、S2...S8为8个不同的选择函数,P为置换函数,E为扩展函数。

为了计算f(R,k),先规定B1、B2...B8每个为6位块,且

B1、B2...B8=k⊕E(R)

于是有 

f(R,k)=P[S1(B1)S2(B2)...S8(B8)]

 因此,在f(R,k)的计算中将k⊕E(R)分成8个块,即每块6位(即Bi),然后每个Bi取作Si的一个输入就得到每个都为4位的8个块Si(Bi) (i=1,2,…,8)的输出,再将此8块连接成32位的整块。

这个整块就构成了P的输出,经P置换,即为f(R,k)的输出。

3.3子密钥的产生

在DES中,每一轮迭代都使用了一个轮密钥。

轮密钥是从用户输入的密钥k(64位)产生的。

实用密钥是56位,另8位是奇偶校验位:

输出密钥k的第8 , 16 , …,64位为奇偶校验位(每一字节的最后一位),这些位的值使得每个字节恰好包含了奇数个1,这样如果输入密钥中某个字节中存在一个错误,奇偶校验可以帮助查到这些错误。

输入的密钥k先经过一个置换(称为“置换选择1”)进行重排。

置换结果(56位)被当成两个28比特的量C0与D0 ,其中C0是置换结果的前28位,而D0是置换结果的后28位。

注意到,在置换选择1中不出现第8,16,24,32,40,48,6,4位,因此实际64位的密钥k在经过置换选择1后,奇偶校验位被删除掉而仅保留下有效的56位密钥。

置换选择1与初始置换IP的含义类似。

例如,置换结果C0的第7位是输入密钥k的第9位,而置换结果D0的第10位是输入密钥的第54位。

在计算第i轮迭代所需要的子密钥时,首先对Ci - 1与Di - 1进行循环左移,分别得到Ci与Di。

循环的次数取决于i的值:

如果i = 1,2,9和16,循环左移的次数是1;否则循环左移的次数等于2。

这些经过移位的值将作为下一个循环的输入。

然后,以Ci Di作为另外一个由DES算法固定的置换选择(称为“置换选择2”)的输入,所得到的置换结果即为第i轮迭代所需要的子密钥ki。

3.4、16轮循环加密

以经过S1为例:

B=R_Ki(1:

6);

x=B

(1)*2+B(6)+1;%将第一比特与第六比特组合在一起形成行号x

y=B

(2)*8+B(3)*4+B(4)*2+B(5)+1;%将第二三四五比特组合在一起形成列号y

C=['0000',dec2bin(S1(x,y))]%将由盒s1查到的十进制数转化为四位二进制

C=C(end-3:

end);%将C编号为C

(1),C

(2),C(3),C(4)

C1=[str2num(C

(1)),str2num(C

(2)),str2num(C(3)),str2num(C(4))];

 

4、测试:

对于相同的明文,当密钥不同时,经过DES加密所得的密文是不同的。

对于相同的密钥,不同明文通过DES加密所得密文不同。

5、DES算法特点总结:

算法特点:

分组比较短、密钥太短、密码生命周期短、运算速度较慢。

DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。

而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的。

然而,这并不等于说DES是不可破解的。

而实际上,随着硬件技术和Intemet的发展,其破解的可能性越来越大,而且,所需要的时间越来越少。

使用经过特殊设计的硬件并行处理要几个小时。

6、参考文献:

【1】(美)帕尔,(美)佩尔茨尔,深入浅出密码学——常用加密技术原理与应用【M】。

清华大学,2012。

【2】(加)斯廷森,密码学原理与实践【M】。

电子工业,2009。

【3】CleveMoler,MATLAB数值计算【M】。

航空航天大学,2015。

7、程序代码:

functionC=DEST(M,K)

%%---------------------------------------------------------------

%数据加密标准DES算法的Matlab实现

%输入明文M和密钥K用16进制数表示,字符串格式

%---------------第一步:

数据初始化--------------------------------

%以字符串形式输入的明文转换成01数字串

MB=[];

fori=1:

16

Mi=M(i);

MBi=['0000',dec2bin(hex2dec(Mi))];%将16进制数转化为2进制

MBi=MBi(end-3:

end);

MBi=[str2num(MBi

(1)),str2num(MBi

(2)),str2num(MBi(3)),str2num(MBi(4))];%字符串矩阵被转换成一个数值矩阵

MB=[MB,MBi];

end

M=MB;

%以字符串形式将输入的密钥转化成01数字串

KB=[];

fori=1:

16

Ki=K(i);

KBi=['0000',dec2bin(hex2dec(Ki))];

KBi=KBi(end-3:

end);

KBi=[str2num(KBi

(1)),str2num(KBi

(2)),str2num(KBi(3)),str2num(KBi(4))];

KB=[KB,KBi];

end

K=KB;

E=[32,1,2,3,4,5;

4,5,6,7,8,9;

8,9,10,11,12,13;

12,13,14,15,16,17;

16,17,18,19,20,21;

20,21,22,23,24,25;

24,25,26,27,28,29;

28,29,30,31,32,1];

%将32比特变成48比特的扩展换位表功能表(S盒)

S1=[14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7;

0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8;

4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0;

15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13];

S2=[15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10;

3,13,4,7,15,2,8,14,12,0,1,10,6,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1