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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

中国矿业大学密码学课程设计报告剖析.docx

1、中国矿业大学密码学课程设计报告剖析 中国矿业大学 密码学课程设计报告 院系: 计算机学院 专业: 信息安全 班级: 姓名: 学号: 指导老师: 2014年6月 摘要 近些年来,由于许多私密信息的泄漏,信息安全成为全社会的需求,所以也成为了整个社会的关注热点。对于信息安全来说,密码学是信息安全的核心,应用密码学技术是实现安全系统的核心技术。随着信息系统及网络系统的爆炸性增长,形形色色的安全威胁严重阻碍了当前的信息化进程。由于对信息的机密性、完整性、不可否认性的需要,密码学变得炙手可热。经过学习应用密码学这门课程,我们对密码学有了初步的认识和了解,对于一些理论和算法都有了初步掌握。此次密码学课程设

2、计,主要设计的是维吉尼亚密码算法、实现HASH算法SHA1、AES算法的实现以及实现椭圆曲线密码算法。这些经典的密码算法是我们学习密码学课程设计所必须掌握的,也是学习信息安全的基础。通过这次的密码学课程设计,对密码技术有了更深入的了解和掌握。关键词:信息安全;密码学;密码技术。1 古典密码 Vignere1.1 古典密码 Vignere概述1858年法国密码学家维吉尼亚提出一种以移位替换为基础的周期替换密码。这种密码是多表替换密码的一种。是一系列(两个以上)替换表依次对明文消息的字母进行替换的加密方法。1.2 算法原理与设计思路1.首先使用维吉尼亚方阵,它的基本方阵是26列26行。方阵的第一行

3、是a到z按正常顺序排列的字母表,第二行是第一行左移循环一位得到得,其他各行依次类推。2.加密时,按照密钥字的指示,决定采用哪一个单表。例如密钥字是bupt,加密时,明文的第一个字母用与附加列上字母b相对应的密码表进行加密,明文的第二个字母用与附加列的字母u相对应的密码表进行加密,依次类推。3.令英文字母a,b,z对应于从0到25的整数。设明文是n个字母组成的字符串,即 m=m1m2m3m4mn密钥字周期性地延伸就给出了明文加密所需的工作密钥K=k1k2kn,E(m)=C=c1c2cn加密:Ci=mi+kimod26解密:mi=ci-kimod26,i=1,2,3,n 加密算法的关键是给出初始密

4、钥,例如第一个密钥字母是e,对第一个明文字母p进行加密时,选用左边附加列上的字母e对应的那一行作为代替密码表,查处与p相对应的密文字母是T,依次类推即可得出明文。上述代码中的生成密钥部分为核心代码,只有密钥更长,才能保证密码算法的可靠性。解密算法和加密算法只需要减去密钥继续模26即可得到。1.3 密码安全性分析首先,破译的第一步就是寻找密文中出现超过一次的字母。有两种情况可能导致这样的重复发生。最有可能的是明文中同样的字母序列使用密钥中同样的字母加了密;另外还有一种较小的可能性是明文中两个不同的字母序列通过密钥中不同部分加了密,碰巧都变成了密文中完全一样的序列。假如我们限制在长序列的范围内,那

5、么第二种可能性可以很大程序地被排除,这种情况下,我们多数考虑到4个字母或4个以上的重复序列。 其次,破译的第二步是确定密钥的长度,又看看这一段先: 密钥 F O R E S T F O R E S T F O R E S T F O R E S T F O R 明 文 b e t t e r t o d o w e l l t h a n t o s a y w e l l 密 文 G S K X W K Y C U S O X Q Z K L S G Y C J E Q P J Z C 第一个YC出现后到第二个YC的结尾一共有12个字母(U S O X Q Z K L S G Y C) 那么

6、密钥的长度应是12的约数1,2,3,4,6,12之中的一个(其中,1可排除)。 第三, 破译的时候,可以从一下几个方面进行考虑。1.AE段,UZ段以及OT段的特征比较显著,可先从这些方面着手; 2.如果一些字符串出现的频率较多,不妨猜猜,特别要注意THE,-ING等的出现;3.要留意那些图表中没有出现的字母,很多时候也会是突破点,如X与Z的空缺;4.图表最好还是做一下,毕竟比较直观,好看 。 因此,利用单纯的数学统计方法就可以攻破维吉尼亚密码,所以在使用这种密码的过程中,我们尽量增加密钥的长度,只有密钥长度的足够长时,密码的使用才会越安全。1.4 实验代码#include #include u

7、sing namespace std;const int N=26;char vNN=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;int number(char x)/把行号字母对应到数字 char y=a; for(int i=0;iN;i+) if(x=(y+i) return i; void encryption(string m,string k)/加密 coutm; coutk; int mlen,klen; mlen=m.length(); klen=k.length(); char *p,*q,*t;/明文,初始密钥,密

8、钥串。把string换成char p=new charm.length()+1; strcpy(p,m.c_str(); q=new chark.length()+1; strcpy(q,k.c_str(); t=new charm.length()+1; int j=0; for(int i=0;imlen;i+) ti=qj; j+; j=j%klen; /生成密钥 cout密文:; for(i=0;imlen;i+) coutvnumber(ti)number(pi); coutendl;void disencryption(string c,string k)/解密 coutc; co

9、utk; int clen,klen; clen=c.length(); klen=k.length(); char *p,*q,*t;/密文,初始密钥,密钥串。把string换成char p=new charc.length()+1; strcpy(p,c.c_str(); q=new chark.length()+1; strcpy(q,k.c_str(); t=new charc.length()+1; int j=0; for(int i=0;iclen;i+) ti=qj; j+; j=j%klen; /生成密钥 cout明文:; for(i=0;iclen;i+) for(int

10、j=0;jN;j+) if(vnumber(ti)j=pi) coutchar(j+97);break; coutendl;int main() for(int i=1;iN;i+) for(int j=0;jN;j+) vij=vi-1(j+1)%N; /方阵初始化 cout欢迎使用维吉尼亚加密!endlendl; cout请选择要进行的操作endl; int flag; do cout1.加密2.解密3.结束:flag; string m,k; if(flag=1)encryption(m,k); else if(flag=2) disencryption(m,k); else if(fl

11、ag!=1&flag!=2&flag!=3) cout输入错误,请重新输入!; while(flag!=3); return 0;1.5 实验结果展示2 HASH算法SHA1的实现2.1 算法原理与设计思想2.1.1 安全哈希算法概述 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于264位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输

12、的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。 2.1.2 SHA1的分组过程 对于任意长度的明文,SHA1的明文分组过程与MD5相类似,首先需要对明文添加位数,使明文总长度为448(mod512)位。在明文后添加位的方法是第一个添加位是l,其余都是0。然后将真正明文的长度(没有添加位以前的明文长度)以64位表示,附加于前面已添加过位的明文后,此时的明文长度正好是512位的倍数。与MD5不同的是SHA1的原始报文长度不能超过2的64次方,另外SHA1的明文长度从低位开始填充。 经过添加位

13、数处理的明文,其长度正好为512位的整数倍,然后按512位的长度进行分组(block),可以划分成L份明文分组,我们用Y0,Y1,YL-1表示这些明文分组。对于每一个明文分组,都要重复反复的处理,这些与MD5是相同的。 对于512位的明文分组,SHA1将其再分成16份子明文分组(sub-block),每份子明文分组为32位,我们使用Mk(k= 0, 1,15)来表示这16份子明文分组。之后还要将这16份子明文分组扩充到80份子明文分组,我们记为Wk(k= 0, 1,79),扩充的方法如下。W t = M t , 当0t15W t = ( W t-3 W t-8 W t-14 W t-16 )

14、1, 当16t79 SHA1有4轮运算,每一轮包括20个步骤(一共80步),最后产生160位摘要,这160位摘要存放在5个32位的链接变量中,分别标记为A、B、C、D、E。这5个链接变量的初始值以16进制位表示如下。A=0x67452301B=0xEFCDAB89C=0x98BADCFED=0x10325476E=0xC3D2E1F02.1.3 SHA1的4轮运算 SHA1有4轮运算,每一轮包括20个步骤,一共80步,当第1轮运算中的第1步骤开始处理时,A、B、C、D、E五个链接变量中的值先赋值到另外5个记录单元A,B,C,D,E中。这5个值将保留,用于在第4轮的最后一个步骤完成之后与链接变量A,B,C,D,E进行求和操作。SHA1的4轮运算,共80个步骤使用同一个操作程序,如下:A,B,C,D,E(A5)+ (B,C,D)+E+Wt+Kt,A,(B30),C,D其中 (B,C,D)为逻辑函数,Wt为子明文分组W

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

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