DES算法实现及分析论文

上传人:人*** 文档编号:495890679 上传时间:2023-02-02 格式:DOC 页数:12 大小:68KB
返回 下载 相关 举报
DES算法实现及分析论文_第1页
第1页 / 共12页
DES算法实现及分析论文_第2页
第2页 / 共12页
DES算法实现及分析论文_第3页
第3页 / 共12页
DES算法实现及分析论文_第4页
第4页 / 共12页
DES算法实现及分析论文_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《DES算法实现及分析论文》由会员分享,可在线阅读,更多相关《DES算法实现及分析论文(12页珍藏版)》请在金锄头文库上搜索。

1、-工程报告:DES 算法的实现与分析组员:柴彦廷 121041302雨潇 121041316唐均 121041328王森 121041333王钰 121041334熊枫 121041337. z-目录1.引言22.工程研究22.1框架设计、模块划分32.2.DES加密技术简介33.方案设计33.1明文的输入与转化43.2S盒及P盒原理简介43.3子密钥的产生53.416轮循环加密54.仿真结果输出55.DES算法特点总结86.参考文献87.程序代码9一、引言工程的选题目的和意义:DES采用分组乘积密码体制,它是由IBM开发,是对早期被称为Lucifer密码体制的改良。DES在1975年3月17

2、日首次在联邦记录中公布,而且声明比照算法征求意见。到1977年2月15日拟议中的DES被采纳为非应用的一个联邦标准。最初预期DES作为一个标准只能使用1015年,然而,出于种种原因,可能是DES还没有受到严重的威胁,事实证明了DES要长寿得多。在其被采用后,大约每隔5年被评审一次。DES的最后一次评审是在1999年1月。但是,随着计算机计算能力的提高,由于DES的密钥过短,仅有56位,对DES的成功攻击也屡见报端。尽管如此,DES的出现是现代密码学历史上非常重要的事件。它对于我们分析掌握分组密码的根本理论与设计原理仍然具有重要的意义。本课题是在Matlab的环境下对DES算法的实现和分析,探究

3、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轮迭代,然后再进展循环移位与变换,最后进展逆变换得出密文。加密与解密使用一样的密钥,

4、因而它属于对称密码体制。 假设输入的明文数据是64比特。首先经过初始置换IP后把其左半局部32比特记为L0,右半局部32比特记为R0,即成了置换后的输入;然后把R0与密钥产生器产生的子密钥k1进展运算,其结果计为f(R0,k1);再与L0进展摸2加得到L0f(R0,k1),把R0记为L1放在左边,而把L0f(R0,k1)记为R1放在右边,从而完成了第一轮迭代运算。在此根底上,重复上述的迭代过程,一直迭代至第16轮。所得的第16轮迭代结果左右不交换,即L15f(R15,k16)记为R16,放在左边,而R15记为L16放在右边,成为预输出,最后经过初始置换的逆置换IP-1运算后得到密文。三、 方案

5、设计:3.1 明文的输入与转化为数字串由于输入的明文和密钥都是16进制表示的字符串格式,因此在输入后要将字符串转换为01数字串。程序:MB=; %定义变量MBfor i=1:16 %开场循环 Mi=M(i); %将输入字符串M的第i位赋值给Mi MBi=0000,dec2bin(he*2dec(Mi); %将16进制数转化为2进制 MBi=MBi(end-3:end); MBi=str2num(MBi(1),str2num(MBi(2),str2num(MBi(3),str2num(MBi(4);%字符串矩阵被转换成一个数值矩阵 MB=MB,MBi; endM=MB; 3.2S盒及P盒原理简介

6、 S盒运算: 在密码函数f(R,k)中有8个S盒,称为8个不同的选择函数,分别用S1、S2S8)表示。每个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就是

7、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=kE(R)于是有f(R,k)=PS1(B1)S2(B2).S8(B8)因此,在f(R,k)的计算中将kE(R)分成8个块,即每块6位即Bi,然后每个Bi取作Si的一个输入就得到每个都为4位的8个块Si(Bi)(i=

8、1,2,8)的输出,再将此8块连接成32位的整块。这个整块就构成了P的输出,经P置换,即为f(R,k)的输出。3.3子密钥的产生 在DES中,每一轮迭代都使用了一个轮密钥。轮密钥是从用户输入的密钥k64位产生的。实用密钥是56位,另8位是奇偶校验位:输出密钥k的第8,16,64位为奇偶校验位每一字节的最后一位,这些位的值使得每个字节恰好包含了奇数个1,这样如果输入密钥中*个字节中存在一个错误,奇偶校验可以帮助查到这些错误。输入的密钥k先经过一个置换称为置换选择1进展重排。置换结果56位被当成两个28比特的量C0与D0,其中C0是置换结果的前28位,而D0是置换结果的后28位。注意到,在置换选择

9、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。这些经过移位的值将作为下一个循环的输入。然后,以CiDi作为另外一个由DES算法固定的置换选择称为置换选择2的输入,所得到的置换结果即为第

10、i轮迭代所需要的子密钥ki。3.4、16轮循环加密以经过S1为例: B=R_Ki(1:6); *=B(1)*2+B(6)+1; %将第一比特与第六比特组合在一起形成行号* y=B(2)*8+B(3)*4+B(4)*2+B(5)+1;%将第二三四五比特组合在一起形成列号y C=0000,dec2bin(S1(*,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); 四、 测试:对于一样的明文,当密钥不同时,

11、经过DES加密所得的密文是不同的。对于一样的密钥,不同明文通过DES加密所得密文不同。五、 DES算法特点总结: 算法特点:分组比拟短、密钥太短、密码生命周期短、运算速度较慢。 DES算法具有极高平安性,到目前为止,除了用穷举搜索法对DES算法进展攻击外,还没有发现更有效的方法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的。然而,这并不等于说DES是不可破解的。而实际上,随着硬件技术和Intemet的开展,其破解的可能性越来越大,而且,所需要的时间越来越少。使用经过特殊设计的硬件并

12、行处理要几个小时。六、 参考文献:【1】美帕尔,美佩尔茨尔,深入浅出密码学常用加密技术原理与应用【M】。清华大学,2012。【2】加斯廷森,密码学原理与实践【M】。电子工业,2009。【3】CleveMoler,MATLAB数值计算【M】。航空航天大学,2015。七、 程序代码:function C=DEST(M,K) % - % 数据加密标准DES算法的Matlab实现 % 输入明文M和密钥K用16进制数表示,字符串格式 % -第一步:数据初始化-%以字符串形式输入的明文转换成01数字串 MB=; for i=1:16 Mi=M(i); MBi=0000,dec2bin(he*2dec(Mi

13、); %将16进制数转化为2进制 MBi=MBi(end-3:end); MBi=str2num(MBi(1),str2num(MBi(2),str2num(MBi(3),str2num(MBi(4);%字符串矩阵被转换成一个数值矩阵 MB=MB,MBi; endM=MB; %以字符串形式将输入的密钥转化成01数字串 KB=; for i=1:16 Ki=K(i); KBi=0000,dec2bin(he*2dec(Ki); KBi=KBi(end-3:end); KBi=str2num(KBi(1),str2num(KBi(2),str2num(KBi(3),str2num(KBi(4); KB=KB,KBi; endK=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=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号