现代密码学课程设计实验报告_第1页
现代密码学课程设计实验报告_第2页
现代密码学课程设计实验报告_第3页
现代密码学课程设计实验报告_第4页
现代密码学课程设计实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安科技大学现代密码学课程设计报告题 目: 密码学计算器 学院: 计算机科学与技术学院 班级: 姓 名: 学 号: 日 期: 2015.1.8 1 课程设计题目 密码学计算器的研究与实现二分工对称密码程序实现Des算法 组长: 古典密码程序设计(置换) SHA算法 ECC算法 三软件运行环境 Windows7操作系统 visual C+4 算法设计思想 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码又称为换位密码。矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的

2、字母,从而形成密文。例如,明文为 attack begins at five ,密钥为 cipher ,将明文按照每行6个字母的形式排在矩阵中,形成如下形式: attack begins atfive根据密钥 cipher 中各字母在字母表中出现的先后顺序,得到给定的一个置换: f = 1 4 5 3 2 6因此有: 密钥: 145326 明文: attack begins atfive根据上面的置换,将原有矩阵中的字母按照第1列、第4列、第5列、第3列、第2列、第6列的顺序排列、则有下面的形式:aacttk binges aivfte从而得到密文:abatgftetcnvaiikse其解密过

3、程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。 ECC(Elliptic Curves Cryptography)加密算法是一种公钥加密算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度。近年来,人们对ECC的认识已经不再处于研究阶段,开始逐步进入实际应用,如国家密码管理局颁布的SM2算法就是基于ECC算法的在引入椭圆曲线之前,不得不提到一种新的坐标系-射影平面坐标系,它是对笛卡尔直角坐标系的扩展,增加了无穷远点的概念。在此坐标系下,两条平行的直线是有交点的,而交点就是无穷远点。两者的变换关系为:笛卡尔

4、坐标系中的点a(x,y),令x=X/Z,y=Y/Z,则射影平面坐标系下的点a的坐标为(X,Y,Z),如点(2,3)就转换为(2Z,3Z,Z)。加法法则运算法则:任意取椭圆曲线上两点P、Q (若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R,过R做y轴的平行线交于R。我们规定P+Q=R。(如图)下面,我们利用P、Q点的坐标(x1,y1),(x2,y2),求出R=P+Q的坐标(x4,y4)。P,Q,R共线,设为y=kx+b,若PQ,k=(y1-y2)/(x1-x2)若P=Q,k=(3x2+2a2x+a4-a1y) /(2y+a1x+a3)解方程组得到:x4=k2+ka1-a2-x1-

5、x2;y4=k(x1-x4)-y1-a1x4-a3; DES是一个16轮的Feistel型结构密码,它的分组长度为64比特,用一个56比特的密钥来加密一个64比特的明文串,输出一个64比特的密文串。其中,使用密钥为64比特,实用56比特,另8位用作奇偶校验。加密的过程是先对64位明文分组进行初始置换,然后分左、右两部分分别经过16轮迭代,然后再进行循环移位与变换,最后进行逆变换得出密文。加密与解密使用相同的密钥,因而它属于对称密码体制。图4-3给出了DES过程框图。假设输入的明文数据是64比特。首先经过初始置换IP后把其左半部分32比特记为L0,右半部分32比特记为R0,即成了置换后的输入;然

6、后把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运算后得到密文。 图4-3 DES框图DES的解密过程与加密过程共用了同样的计算过程。两者的不同之处仅在于解密时子密钥ki的使用顺序与加密时相反。如果加密的子密

7、钥k1,k2,k16, 那么,解密时子密钥的使用顺序为与k16,k15,k1。即:用DES解密时,将以64位密文作为输入,第一轮迭代使用子密钥k16;第二轮迭代使用子密钥k15 , , 第16轮迭代使用子密钥k1, 其他运算与加密时一样,最后输出的便是64位明文。 散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。S

8、HA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512

9、 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。5 算法设计与分析(含流程图)该密码学计算器实现了四个功能,其中两个: (1)古典密码程序设计(置换

10、)(2) 对称密码程序实现(DES) (3) SHA算法 (4) ECC算法 我负责的是古典密码置换算法,我的思想是:不改变原给字母的字符,只根据所给秘钥改变原给字符串的顺序,从而对明文加密,解密思想与加密一样。加密核心代码如下:printf (请输入需要加密的字符数量(不大于100):);scanf(%d,&k); printf(请输入明文(字符串): n);for(i=0;ik;i+)scanf(%d,&mingi);for(j=0;jk;j+)l=1;a=mingj;m=1;for (i=1;i=e;i+)m=m*a; l=m%n; if (l0) l=l+n;cj=l; printf(

11、加密后的密文是:n);for(j=0;jk;j+) printf(%d,cj);解密核心代码如下:printf (请输入需要解密的字符数量(不大于100):);scanf(%d,&k);printf(请输入密文(字符串): n);for(i=0;ik;i+)scanf(%d,&ci);for(j=0;jk;j+) m=1;l=1; a=cj;for (i=1;i=d;i+)m=m*a; l=m%n; if (l0) /在进行Mod操作时,会出现负数,我进行了+n 操作。l=l+n;mingj=l;printf(解密后的明文是:n);for(j=0;jtfun(e,t) Y d=1 N d+(e*d)%t!=1 Y N 输出d 输入2输入1输入明文ming输入密文ca=cj;m=d; l=m%n; mingj=l;a=mingj;m=e; l=m%n; cj=l;l=m%n; if (l0) l=l+n;cj=l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论