ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:413.76KB ,
资源ID:6521320      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6521320.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(密码学.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

密码学.docx

1、密码学 计算机与信息工程学院 密码学设计课程设计报告 (2015/2016学年 第 一学期) 题 目: 系 别: 专 业: 班 级: 学 号: 姓 名: 成绩类别成 绩个人考勤(20)实践成绩(40)总结报告(40)总成绩(100)等级制成绩2015年12月1日摘 要DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文

2、组的加密方法。数据总是通过介质传送,所以数据常常出现被截取、中断、篡改、伪造等安全性问题。随着数字签名、身份验证、数据加密技术的应用,数据安全问题得到了缓解,尤其是数据加密技术使网络数据传输更加安全。本文详细分析并实现DES算法的加密和解密规则,指出了DES算法中存在的缺陷,对降低DES算法加密强度的原因进行了分析,针对DES算法存在的安全隐患给予了简单说明,指出了DES加密算法的使用误区。本文分析了DES加密算法的基本原理,分别从初始变换、DES的迭代过程、密钥变换和逆置换等四个方面加以研究,并且用VisualC语言实现了它的模拟应用。关键词: 加密;解密; DES算法; VisualC目录

3、1、前言 11.1 背景 12、 DES算法简介 22.1 概述 22.2 算法特点 22.3算法原理 32.4 算法分析 42.5算法工作流程 73、结果验证 73.1 验证过程 74、实验总结 105、参考文献 11附录 121、前言1.1 背景数据加密标准(DES,DataEncryptionStandard)是一种使用密钥加密的块密码,它基于使用56位密钥的对称算法。美国国家标准局(NBS)于1973年向社会公开征集一种用于政府机构和商业部门的加密算法,经过评测,最终选择了IBM公司提出的一种加密算法。经过一段时间的试用,美国政府于1977年颁布DES。DES是分组密码的典型代表,也是

4、第一个被公布出来的标准算法,曾被美国国家标准局(现为国家标准与技术研究所NIST)确定为联邦信息处理标准(FIPSPUB46),使用广泛,特别使在金融领域,曾是对称密码体制事实上的世界标准。DES自从公布以来,已成为金融界及其他各种行业最广泛应用的对称密钥密码系统。DES是分组密码的典型代表,也是第一个被公布出来的标准算法。原来规定DES算法的使用期为10年,可能是DES尚未受到严重威胁,更主要是新的数据加密标准研制工作尚未完成,或意见尚未统一,所以当时的美国政府宣布延长它的使用期。因而DES超期服役到2000年。近三十年来,尽管计算机硬件及破解密码技术的发展日新月异,若撇开DES的密钥太短,

5、易于被使用穷举密钥搜寻法找到密钥的攻击法不谈,直到进入20世纪90年代以后,以色列的密码学家Shamir等人提出一种“差分分析法”,以后日本人也提出了类似的方法,这才称得上对它有了攻击的方法。严格地说Shamir的“差分分析法”也只是理论上的价值。至少到目前为止是这样,比如后来的“线形逼迫法”,它是一种已知明文攻击,需要2434.3981012个明、密文对,在这样苛刻的要求下,还要付出很大的代价才能解出一个密钥。不管是差分攻击还是线性攻击法,对于DES的安全性也仅仅只做到了“质疑”的地步,并未从根本上破解DES。也就是说,若是能用类似Triple-DES或是DESX的方式加长密钥长度,仍不失为

6、一个安全的密码系统。早在DES提出不久,就有人提出造一专用的装置来对付DES,其基本思想无非是借用硬件设备来实现对所有的密钥进行遍历搜索。由于电子技术的突飞猛进,专门设备的造价大大降低,速度有质的飞跃,对DES形成了实际的威胁。DES确实辉煌过,它的弱点在于专家们一开始就指出的,即密钥太短。美国政府已经征集评估和判定出了新的数据加密标准AES以取代DES对现代分组密码理论的发展和应用起了奠基性的作用,它的基本理论和设计思想仍有重要参考价值。安全性是分组密码最重要的设计原则,它要求即使攻击者知道分组密码的内部结构,仍不能破译该密码,这也意味着,不存在针对该密码的某种攻击方法,其工作量小于穷密钥搜

7、索。但是随着密码分析技术的发展,使得对于具有更多轮的分组密码的破译成为可能。现如今,依靠Internet的分布式计算能力,用穷举密钥搜索攻击方法破译已成为可能。数据加密标准DES已经达到它的信任终点。但是作为一种Feistel加密算法的例子仍然有讨论的价值。2、 DES算法简介2.1 概述DES是 D a t a E n c r y p t i o n S t a n d a r d(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,美国国家标准局于19 7 7 年 公布把它作为非机要部门使用的 数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上 ,扮演了十分重要的角色 。 DE

8、S是一个分组加密算法,它以6 4位为分组对数据加密。同时DES也是一个对 称算法 ,加密和解密用的是同一个算法 。它的密匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变 。 其中有极少量的数被认为是弱密匙 ,但是很容易避开他们 。所以保密性依赖于密钥 。 2.2 算法特点DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的。然而,这并不等于

9、说DES是不可破解的。而实际上,随着硬件技术和Intemet的发展,其破解的可能性越来越大,而且,所需要的时间越来越少。为了克服DES密钥空间小的缺陷,人们又提出了三重DES的变形方式。2.3算法原理DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 轮循环,使用异或,置换,代换,移位操作四种基

10、本运算。DES的工作原理可用下图(a)表示。需要进行加密处理的明文(plaintext)被分成64位(64-bit)的块,DES的目标就是对这64位的明文56位的密钥(初始Key值为64位,但DES算法规定,其中第8、16、.64位是奇偶校验位,不参与DES运算,故Key 实际可用位数便只有56位)进行加密处理,生成对应的64位的密文(ciphertext)。为讨论方便,以下假设初始明文就是64位的。 DES加密过程可分为19步。第1步是对64位明文进行置换操作;最后1步则是对前面一步的64位数进行反向置换操作。倒数第2位是将前面一步的64位数的前32位与后32位进行交换。剩下的16位操作功能

11、是一样的,只是每一位所使用的密钥K是不同的。DES的工作原理2.4 算法分析(1)初始置换IP和初始逆置换IP-1初始置换和初始逆置换为互逆运算,初始置换发生在加/解密运算前,初始逆置换发生在加/解密运算后。初始置换和初始逆置换的变换分别如表3.1和表3.2所示。这里表格的数字是指数据所在的位置。初始置换IP初始逆置换IP-1(2)扩展置换32位的右半部分明文数据首先要进行扩展置换,扩展置换将32位的输入数据扩展成为48位的输出数据,它有三个目的:第一,它产生了与子密钥同长度的数据以进行异或运算;第二,它提供了更长的结果,使得在以后的子加密过程中能进行压缩;第三,它产生雪崩效应(avalanc

12、heeffect),这也是扩展置换最主要的目的,使得输入的一位将影响两个替换,所以输出对输入的依赖性将传播的更快(雪崩效应)。扩展置换的置换方法与初始置换相同,只是置换表不同,扩展置换表如下所示。扩展置换表(3)16轮循环经过了初始置换的64位明文数据在中间分成2部分,每部分32位,左半部分和右半部分分别记为L0和R0。然后,L0和R0进入第一轮子加密过程。R0经过一系列的置换得到32位输出,再与L0做逐位异或(XOR)运算。其结果成为下一轮的R1,R0则成为下一轮的L1,如此连续运作16轮。我们可以用下列两个式子来表示其运算过程:16轮循环2.5算法工作流程 des加密流程 3、结果验证3.

13、1 验证过程 1.编辑代码,运行代码得到如图4-1的运行结果图4-12输入数据进行测试。 (1)输入纯字母进行测试,运行结果如图4-2所示。图4-2(2)输入纯数字进行测试,运行结果如图4-3所示。图4-3(3)输入数字与字母进行测试,运行结果如图4-4所示。图4-4(4)输入数字、字母、特殊字符进行测试,运行结果如图4-5所示图4-54、实验总结通过本次的课程设计,我对DES加密算法的有关知识有了进一步的了解,刚刚开始我并不知道如何去完成这次的课程设计,但通过我去网上查询有关的资料,我最终知道该从哪里下手去写这篇课程设计。通过本次的课程设计,我知道了自己身上的不足和自己知识的欠缺。本次课程设

14、计,我不断的调试代码,花了较多的时间,最终成功的把代码调试好,心中充满着喜愉,通过本课程设计,我增加了许多的知识,对DES算法的使用有了更进一步的了解。通过本次的课程设计,发现自己在数据结构方面的了解不足,在调试代码中,发现有较多的错误,这些错误的产生都是因为我对知识的认识不够深入而产生的。通过本次的课程设计,我对如何去设计DES算法有了一定的了解。5、参考文献1张延伟杨金岩,VerilogHDL程序设计实例详解,人民邮电出版社,2008,258-2762Tomst Denis,Simon Johnson,沈晓斌,程序员密码学,机械工业出版社,2006,16-313毛明,大众密码学,高等教育出

15、版社,2003,5-134RanjanBose,吴传坤,信息论编码与密码学,机械工业出版社,2005,18-355宋震等.密码学.中国水利水电出版社,20026冯登国,吴文玲.分组密码的设计与分析.清华大学出版社,20007张焕国,冯秀涛,覃中平,等.演化密码与DES的演化研究J.计算机学报,2003,26(12).8沈昌祥,张焕国,冯登国,等.信息安全综述J.中国科学(E辑:信息科学),2007(2).9谷利泽,郑世慧,杨义先.现代密码学教程M.北京:北京邮电大学出版社,200910章照止.现代密码学基础(第一版).北京邮电大学出版社2004,(3)11叶阮健.曹英.张长富.经典密码学与现代

16、密码学,200412赖溪松韩亮.计算机密码学及其应用.国防科技大学,2001附录#include#include#includevoid show1() /主界面 printf(nnntt#DES加密解密系统# nn); printf(tt-n); /printf(tt-n); printf(tt#n); printf(ttttttttn); printf(ttttttttn); printf(ttt1.加密); printf(t2.解密); printf(t3.退出tttn); printf(ttttttttn); printf(tt#n); printf(tt-n);void show2(

17、) /加密界面 printf(nnntt#DES加密 #nn); printf(tt-n); printf(tt#n); printf(ttttttttn); printf(ttt请选择明文和密钥的输入方式:ttn); printf(ttttttttn); printf(ttt1.直接输入); printf(t2.从文件读取); printf(t3.退出n); printf(tt#n); printf(tt-n); printf(ttt选择:);void reader(char str30,char s8) /读取明文和密钥 FILE *fp; fp=fopen(str,r); if(fp=N

18、ULL) printf(明文读取失败!n); else fscanf(fp,%s,s); fclose(fp);void To2Bin(char p8,int b64) /将字节转换成二进制流 int i,k=0; for(i=0;i=1) if(j&pi) bk+=1; else bk+=0; int IP_Table64 = /初始置换(IP) 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7, 5

19、6, 48, 40, 32, 24, 16, 8, 0, 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6; int E_Table = /扩展变换E 31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, 7, 8, 9, 10, 11, 12, 11, 12, 13, 14, 15, 16, 15, 16, 17, 18, 19, 20, 19, 20, 21, 22, 23, 24, 23, 24, 25, 26, 27, 28, 27,

20、 28, 29, 30, 31, 0; int S_Box8416 = /8个s盒 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 , 15, 1, 8,14, 6,11, 3, 4, 9, 7, 2,13,12, 0, 5,10, 3,13, 4, 7,15,

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

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

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

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

25、 2, 7,11, 4, 1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, 8, 2, 1,14, 7, 4,10, 8,13,15,12, 9, 0, 3, 5, 6,11 ;int IP_1_Table64 = /逆初始置换IP-1 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10,

26、50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25, 32, 0, 40, 8, 48, 16, 56, 24;int P_Table32 = /置换运算P 15,6,19,20, 28,11,27,16, 0,14,22,25, 4,17,30,9, 1,7,23,13, 31,26,2,8, 18,12,29,5, 21,10,3,24; int PC_156 = 56,48,40,32,24,16,8, /密钥置换PC_1 0,57,49,41,33,25,17, 9,1,58,50,42,34,26, 18,10,2,59,51,43,35, 62,54,46,38,30,22,14, 6,61,53,45,37,29,21, 13,5,60,52,44,36,28, 20,12,4,27,19,11,3; int PC_248 = /密钥置换PC_2 13,16,10,23,0,4, 2,27,14,5,20,9, 22,18,11,3,25,7, 15,6,26,19,12,1, 40,51,30,36,46,54, 29,39,50,44,32,47, 43,48,38,55,33,52, 45,41,49,35,28,31; void Replacement(int arry1,int arry2,

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

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