信息安全概论实验六

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《信息安全概论实验六》实验报告姓名:学号:专业班级:成绩:======================================================================1.实验题目:信息加密(二)2.实验目的:掌握信息加密的基本原理和方法。3.实验环境计算机一台,安装软件windows2000server、Vmware、sniffer、vc++6.0等。4.实验要求:完成教材第九章课后习题7上机题。恺撒密码的加密方法是把a变成D,b变成E,c换成F,依次类推,z换成C。这样明文和密文的字母就建立一一对应的关系。加密原理其实就是:对明文加上了一个偏移值29,即“a”对应的ASCII码位97,“D”对应的ASCII码为68,相减得到29。编写程序1:实现恺撒密码加密单词“julus”。5.实验内容及步骤案例9-1DES算法的程序实现根据DES算法的原理,可以方便的利用C语言实现其加密和解密算法。在VC++6.0中新建基于控制台的Win32应用程序,算法如程序proj8_1.cpp所示。设置一个密钥匙为数组charkey[8]={1,9,8,0,9,1,7,2},要加密的字符串数组是str[]=Hello,利用Des_SetKey(key)设置加密的密钥,调用Des_Run(str,str,ENCRYPT)对输入的明文进行加密,其中第一个参数str是输出的密文,第二个参数str是输入的明文,枚举值ENCRYPT设置进行加密运算。程序执行的结果如图8-7所示。案例9-2RSA算法的程序实现根据RSA算法的原理,可以利用C语言实现其加密和解密算法。RSA算法比DES算法复杂,加解密的所需要的时间也比较长。本案例利用RSA算法对文件的加密和解密。算法根据设置自动产生大素数p和q,并根据p和q的值产生模(n)、公钥(e)和密钥(d)。利用VC++6.0实现核心算法,如图8-8所示。编译执行程序,如图8-9所示。该对话框提供的功能是对未加密的文件进行加密,并可以对已经加密的文件进行解密。在图8-9中点击按钮“产生RSA密钥对”,在出现的对话框中首先产生素数p和素数q,如果产生100位长度的p和q,大约分别需要10秒左右,产生的素数如图8-10所示。利用素数p和q产生密钥对,产生的结果如图8-11所示。必须将生成的模n、公密e和私密d导出,并保存成文件,加密和解密的过程中要用到这三个文件。其中模n和私密d用来加密,模n和公密e用来解密。将三个文件分别保存,如图8-12所示。在主界面选择一个文件,并导入“模n.txt”文件到RSA模n文本框,导入“私密.txt”文件或者“公密.txt”,加密如果用“私密.txt”,那么解密的过程就用“公密.txt”。反之依然,加密过程如图8-13所示。加密完成以后,自动产生一个加密文件,如图8-14所示。解密过程要在输入文件对话框中输入已经加密的文件,按钮“加密”自动变成“解密”。选择“模n.txt”和密钥,解密过程如图8-15所示。解密成功以后,查看原文件和解密后的文件,如图8-16所示。案例9-3使用PGP产生密钥PGP加密技术的创始人是美国的PhilZimmermann。他的创造性把把RSA公钥体系和传统加密体系的结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此PGP成为目前几乎最流行的公钥加密软件包。由于RSA算法计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,IDEA加解密的速度比RSA快得多。PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。收件人同样是用RSA解出随机密钥,再用IEDA解出原文。这样的链式加密既有RSA算法的保密性(Privacy)和认证性(Authentication),又保持了IDEA算法速度快的优势。PGP加密软件最新版本是8.0.2,使用PGP8.0.2i可以简洁而高效地实现邮件或者文件的加密、数字签名。PGP8.0.2的安装界面如图8-17所示。下面的几步全面采用默认的安装设置,因为是第一次安装,所以在用户类型对话框中选择“No,IamaNewUser”,如图8-18所示。根据需要选择安装的组件,一般根据默认选项就可以了:“PGPdiskVolumeSecurity”的功能是提供磁盘文件系统的安全性;“PGPmailforMicrosoftOutlook/OutlookExpress”提供邮件的加密功能。如图8-19所示。因为在用户类型对话框中选择了“新用户”,在计算机启动以后,自动提示建立PGP密钥,如图8-20所示。点击按钮“下一步”,在用户信息对话框中输入相应的姓名和电子邮件地址,如图8-21所示。在PGP密码输入框中输入8位以上的密码并确认,如图8-22所示然后PGP会自动产生PGP密钥,生成的密钥如图8-23所示。案例9-4使用PGP加密文件使用PGP可以加密本地文件,右击要加密的文件,选择PGP菜单项的菜单“Encrypt”,如图8-24所示。系统自动出现对话框,让用户选择要使用的加密密钥,选中一个密钥,点击按钮“OK”,如图8-25所示。目标文件被加密了,在当前目录下自动产生一个新的文件,如图8-26所示。打开加密后的文件时,程序自动要求输入密码,输入建立该密钥时的密码。如图8-27所示。(一)题目设计要求说明7.恺撒密码的加密方法是把a变成D,b变成E,c换成F,依次类推,z换成C。这样明文和密文的字母就建立一一对应的关系。加密原理其实就是:对明文加上了一个偏移值29,即“a”对应的ASCII码位97,“D”对应的ASCII码为68,相减得到29。编写程序1:实现恺撒密码加密单词“julus”。(上机完成)编写程序2:实现解密,将程序1得到的密文进行解密。(上机完成)(二)基础知识介绍凯撒密码的历史凯撒密码(caeser)是罗马扩张时期朱利斯•凯撒(JuliusCaesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。古罗马随笔作家修托尼厄斯在他的作品中披露,凯撒常用一种“密表”给他的朋友写信。这里所说的密表,在密码学上称为“凯撒密表”。用现代的眼光看,凯撒密表是一种相当简单的加密变换,就是把明文中的每一个字母用它在字母表上位置后面的第三个字母代替。古罗马文字就是现在所称的拉丁文,其字母就是我们从英语中熟知的那26个拉丁字母。因此,凯撒密表就是用d代a,用e代b,……,用z代w。这些代替规则也可用一张表格来表示,所以叫“密表”。基本原理在密码学中存在着各种各样的置换方式,但所有不同的置换方式都包含2个相同的元素。密钥和协议(算法)。凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换。置换加密的优点就在于它易于实施却难于破解.发送方和接收方很容易事先商量好一个密钥,然后通过密钥从明文中生成密文,即是敌人若获取密文,通过密文直接猜测其代表的意义,在实践中是不可能的。凯撒密码的加密算法极其简单。其加密过程如下:在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:c≡m+kmodn(其中n为基本字符个数)同样,解密过程可表示为:m≡c+kmodn(其中n为基本字符个数)对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。加密解密算法恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:明文:THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG密文:WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ恺撒密码的加密、解密方法还能够通过同余数的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为:E(x)=(x+n)mod2解密就是:D(x)=(x-n)mod2(三)环境介绍编程语言C语言编译环境MicrosoftVisualStudio2010操作系统Windows,(四)思路以及算法分析定义两个字符数组charp[1000]和charc[1000],用来存放明文和密文。定义一个key,表示移位的个数。这是加密解密的关键。综合考虑到在密表尾部的字母加密或解密的时候会循环移动到密表头部,所以加密、解密语句分别为:c[i]=(p[i]-'a'+key)%26+'a'向后移动keyp[i]='z'-('z'+key-c[i])%26向前移动key(五)源程序代码#includestdio.hvoidmain(){charp[1000];charc[1000];intkey,i,m;key=5;/*定义一个移位个数为5,即加密向右移5位,解密则相反*/printf(pleaseinputthePlaintext:\n);gets(p);/*读取字符串,直至接受到换行符停止,并将读取的结果存放在p[1000]中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。*/for(i=0;p[i]!='\0';i++)c[i]=(p[i]-'a'+key)%26+'a';/*加密算法,所有明文符号由向右移5位的密文代替*/c[i]='\0';printf(theCiphertextis:\n%s\n,c);/*输出加密后的密文*/printf(pleaseinputtheCiptertext:\n);gets(c);/*读取字符串,直至接受到换行符停止,并将读取的结果存放在c[1000]中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。*/for(i=0;c[i]!='\0';i++)p[i]='z'-('z'+key-c[i])%26;/*解密算法,所有明文符号由向左移5位的明文代替*/p[i]='\0';printf(thePlaintextis:\n%s\n,p);/*输出解密后的明文*/return;}(六)运行结果分析试对明文security进行加密,再将其解密:输入明文security:回车后,输出加密后的密文:xjhzwnyd输入security的密文“xjhzwnyd”:回车后出现解密后的明文security:6.实验总结及问题回答程序是在几个小时内测试运行成功的。凯撒密码是密码学中,一种最简单的加密算法。原理并不复杂,只要理解了,实现起来并不困难。程序并不长,基本实现了对于凯撒密码的加密和解密过程。但其中还存在很多不足,比如,这段代码并没有给出当遇到空格或者别的符号的处理方法,又比如代码只给出了当字符是在a到z的情况下的解决方法,而从A到Z则没有给出等等。因此,还有很多地方还可以进行改进:1.可以在开始设置一个选择,是进行加密还是解密;2.可以将key设为一个整型变量,在程序运行开始时,需要用户输入key值,再根据key值进行加密解密。这样,凯撒密码就可以变得更加灵活。总体来说,从开始编写、修改凯撒密码的程序到最终调试成功,还算比较顺利,也体会到了一点密码学的趣味

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功