《计算机数据安全》课程
××凯撒密码的实现××
班级:06 计科 3 班 姓名:李书彬 学号:0610322102 指导老师:李红
一、 设计要求说明
1、 设计一个凯撒密码的加密和解密的程序,要求输入一段字符和密码,输出相应的密文,完成加密过程 ;
若输入被加密的密文及解密密钥,能还原出原文,完成解密。
2、 语言不限,工具不限,独立完成,参加答辩。
3、 严格按照格式的要求完成文档,在第六部分的运行结果分析中,要求抓图说明。
4、电子文档(包括文本、源代码打包后,发到 datasecurity2009@126.com邮箱中,打包后的文件名为“学
号+姓名”)
二、 基础知识介绍
历史:凯撒密码(caeser)是罗马扩张时期朱利斯•凯撒(Julius Caesar)创造的,用于加密通过信使传递
的作战命令。它将字母表中的字母移动一定位置而实现加密。
原理:在密码学中,恺撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加
密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目
进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D,B 变成 E,以此类
推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
假如有这样一条指令:
明文(小写):ji xiao jing
用恺撒密码加密后就成为:
密文(大写):ML ALDR MLQJ
如果这份指令被敌方截获,也将不会泄密,因为字面上看不出任何意义。
这种加密方法还可以依据移位的不同产生新的变化,如将每个字母左 19 位,就产生这样一个明
密对照表:
明文:a b c d e f g h i j k l m n o pq r s t u v w x y z
密文:T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
在这个加密表下,明文与密文的对照关系就变成:
明文:b a i d u
密文:UTB WN
很明显,这种密码的密度是很低的,只需简单地统计字频就可以破译。
三、 环境介绍
1.语言:C 语言
2.编译环境:Visual C++ 6.0
3.需安装软件:Visual C++ 6.0
四、 思路以及算法分析
编程思路及算法分析:
首先获取要加密的内容以及密钥,凯撒密码的密钥即字符移动的位数。由于凯撒密码的移位是针对字符
的,因此需要将待加密的内容中每个字符取出,然后针对每个字符分别加以移位。
1.选择加密或解密
用 switch 语句进行选择加密或解密,输入 1 时执行 case 1 进行加密,输入 2 执行 case 2 进行解密,输入 3
执行 case 3 退出,若输入其它数字则执行 default 输出错误提示。
2.读取字符串和密钥
输入字符串用到 get(a) ,字符串中可以包括任意字符;
输入密钥用到 scanf("%d",&k) 密钥是整数所以用%d。
1
评论12