1、海南大学信息科学技术学院 实验报告第 页1海南大学信息科学技术学院实 验 报 告实验课程: 计算机网络安全技术 实验名称:简单密码加解密算法程序设计 学号: 20101602310035 姓名: 黄汉杰 班级: 计算机 2 班 同组成员: 完成日期:2013 年 6 月 2 日1、实验目的 理解网络安全、加密/解密的概念掌握几个典型古典加解密算法的应用2、实验任务 使用凯撒和维吉尼亚加密算法编程实现将明文转换成密文。使用凯撒和维吉尼亚解密算法编程实现将密文转换成明文。3、实验环境安装 Windows9x/2000/XP/2003、W7 操作系统的 PC 机;编程环境:Visual c+;四、实
2、验内容 凯撒密码#includevoid main()char p1000;char c1000;int key,i;key=5; /*定义一个移位个数为 5,即加密向右移 5 位,解密则相反*/printf(“please input the Plaintext: n“);gets(p); /*读取字符串,直至接受到换行符停止,并将读取的结果存放在 p1000中。换行符不作为读取串的内容,读取的换行符被转换为 null 值,并由此来结束字符串。*/评定成绩 指导教师海南大学信息科学技术学院 实验报告第 页2for(i=0;pi!=0;i+)ci=(pi-a+key)%26+a; /*加密算法
3、,所有明文符号由向右移 5 位的密文代替*/ci=0;printf(“the Ciphertext is:n%sn“,c); /*输出加密后的密文*/printf(“please input the Ciptertext:n“);gets(c); /*读取字符串,直至接受到换行符停止,并将读取的结果存放在 c1000中。换行符不作为读取串的内容,读取的换行符被转换为 null 值,并由此来结束字符串。*/for(i=0;ci!=0;i+)pi=z-(z+key-ci)%26; /*解密算法,所有明文符号由向左移 5 位的明文代替*/pi=0;printf(“the Plaintext is:n
4、%sn“,p); /*输出解密后的明文*/return;海南大学信息科学技术学院 实验报告第 页3 维吉尼亚密码#include #include #include void Encry()char key100;char ch,temp;int L,i=0,j=0;if(getchar()=n)temp= ;printf(“请输入密钥: “);gets(key);L=strlen(key);printf(“输入明文: “);while(ch=getchar()!=n)if(ch= )i+;海南大学信息科学技术学院 实验报告第 页4continue;if(ch=a海南大学信息科学技术学院 实验
5、报告第 页5j+;if(j%L=0)printf(“ “);i+;putchar(ch);int Exit()exit(0);int main()char ch;for(;)printf(“请输入你的操作(e/E 加密;d/D 解密;q/Q 退出):“);ch=getchar();if(ch=e|ch=E)Encry();else if(ch=d|ch=D)Decry();else if(ch=q|ch=Q)Exit(); elseprintf(“输入命令错误!“);putchar(getchar();continue;return 0;海南大学信息科学技术学院 实验报告第 页65、实验总结
6、凯撒密码是密码学中,一种最简单的加密算法。原理并不复杂,只要理解了,实现起来并不困难。程序并不长,基本实现了对于凯撒密码的加密和解密过程。但其中还存在很多不足,比如,这段代码并没有给出当遇到空格或者别的符号的处理方法,又比如代码只给出了当字符是在 a 到 z 的情况下的解决方法,而从 A 到 Z 则没有给出等等。因此,还有很多地方还可以进行改进:1.可以在开始设置一个选择,是进行加密还是解密;2.可以将 key 设为一个整型变量,在程序运行开始时,需要用户输入 key 值,再根据 key 值进行加密解密。这样,凯撒密码就可以变得更加灵活。总体来说,从开始编写、修改凯撒密码的程序到最终调试成功,还算比较顺利,也体会到了一点密码学的趣味。海南大学信息科学技术学院 实验报告第 页1