凯撒密码的加密和解密共5页

上传人:沈*** 文档编号:98229125 上传时间:2022-05-29 格式:DOC 页数:5 大小:141.50KB
收藏 版权申诉 举报 下载
凯撒密码的加密和解密共5页_第1页
第1页 / 共5页
凯撒密码的加密和解密共5页_第2页
第2页 / 共5页
凯撒密码的加密和解密共5页_第3页
第3页 / 共5页
资源描述:

《凯撒密码的加密和解密共5页》由会员分享,可在线阅读,更多相关《凯撒密码的加密和解密共5页(5页珍藏版)》请在装配图网上搜索。

1、精品文档关于凯撒密码的实现原理班级: 姓名: 学号: 指导老师: 一、 设计要求说明1、 设计一个凯撒密码的加密和解密的程序 ,要求输入一段字符和密码 ,输出相应的密文 ,完成加密过程;若输入被加密的密文及解密密钥 ,能还原出原文 ,完成解密。2、 语言不限 ,工具不限 ,独立完成 ,参加答辩。3、 严格按照格式的要求完成文档 ,在第六部分的运行结果分析中 ,要求抓图说明。二、 基础知识介绍凯撒密码的历史凯撒密码(caeser)是罗马扩张时期朱利斯凯撒(Julius Caesar)创造的 ,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。古罗马随笔作家修托尼厄斯在他的

2、作品中披露 ,凯撒常用一种“密表”给他的朋友写信。这里所说的密表 ,在密码学上称为“凯撒密表”。用现代的眼光看 ,凯撒密表是一种相当简单的加密变换 ,就是把明文中的每一个字母用它在字母表上位置后面的第三个字母代替。古罗马文字就是现在所称的拉丁文 ,其字母就是我们从英语中熟知的那26个拉丁字母。因此 ,凯撒密表就是用d代a ,用e代b , ,用z代w。这些代替规则也可用一张表格来表示,所以叫“密表”。基本原理在密码学中存在着各种各样的置换方式 ,但所有不同的置换方式都包含2个相同的元素。密钥和协议(算法)。凯撒密码的密钥是3 ,算法是将普通字母表中的字母用密钥对应的字母替换。置换加密的优点就在于

3、它易于实施却难于破解. 发送方和接收方很容易事先商量好一个密钥 ,然后通过密钥从明文中生成密文 ,即是敌人若获取密文 ,通过密文直接猜测其代表的意义 ,在实践中是不可能的。凯撒密码的加密算法极其简单。其加密过程如下: 在这里 ,我们做此约定:明文记为m ,密文记为c ,加密变换记为E(k1,m)(其中k1为密钥) ,解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换: cm+k mod n (其中n为基本字符个数) 同样 ,解密过程可表示为: mc+k mod n (其中n为基本字符个数) 对于计算机而言 ,n可取256或128

4、,m、k、c均为一个8bit的二进制数。显然 ,这种加密算法极不安全 ,即使采用穷举法 ,最多也只要255次即可破译。当然 ,究其本身而言 ,仍然是一个单表置换 ,因此 ,频率分析法对其仍是有效的。加密解密算法恺撒密码的替换方法是通过排列明文和密文字母表 ,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如 ,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用时 ,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置 ,并且写下密文字母表中对应的

5、字母。需要解密的人则根据事先已知的密钥反过来操作 ,得到原来的明文。例如:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ恺撒密码的加密、解密方法还能够通过同余数的数学方法进行计算。首先将字母用数字代替 ,A=0 ,B=1 ,. ,Z=25。此时偏移量为n的加密方法即为:E (x)= (x+n) mod 2 解密就是: D (x)= (x-n) mod 2三、 环境介绍编程语言C语言编译环境Microsoft Visual Studio 2010操作系统Win

6、dows ,四、 思路以及算法分析定义两个字符数组char p1000和char c1000 ,用来存放明文和密文。定义一个key ,表示移位的个数。这是加密解密的关键。综合考虑到在密表尾部的字母加密或解密的时候会循环移动到密表头部 ,所以加密、解密语句分别为:ci=(pi-a+key)%26+a 向后移动keypi=z-(z+key-ci)%26 向前移动key五、 源程序代码#includevoid main() char p1000; char c1000; int key,i,m; key=5; /*定义一个移位个数为5 ,即加密向右移5位 ,解密则相反*/ printf(please

7、 input the Plaintext: n); gets(p); /*读取字符串 ,直至接受到换行符停止 ,并将读取的结果存放在p1000中。换行符不作为读取串的内容 ,读取的换行符被转换为null值 ,并由此来结束字符串。*/ for(i=0;pi!=0;i+) ci=(pi-a+key)%26+a; /*加密算法 ,所有明文符号由向右移5位的密文代替*/ ci=0; printf(the Ciphertext is:n%sn,c); /*输出加密后的密文*/ printf(please input the Ciptertext:n); gets(c); /*读取字符串 ,直至接受到换行

8、符停止 ,并将读取的结果存放在c1000中。换行符不作为读取串的内容 ,读取的换行符被转换为null值 ,并由此来结束字符串。*/ for(i=0;ci!=0;i+) pi=z-(z+key-ci)%26; /*解密算法 ,所有明文符号由向左移5位的明文代替*/ pi=0; printf(the Plaintext is:n%sn,p); /*输出解密后的明文*/ return;六、 运行结果分析试对明文security进行加密 ,再将其解密:输入明文 security:回车后 ,输出加密后的密文:xjhzwnyd输入security的密文“xjhzwnyd”:回车后出现解密后的明文secur

9、ity:七、 总结与不足程序是在几个小时内测试运行成功的。凯撒密码是密码学中 ,一种最简单的加密算法。原理并不复杂 ,只要理解了 ,实现起来并不困难。程序并不长 ,基本实现了对于凯撒密码的加密和解密过程。但其中还存在很多不足 ,比如 ,这段代码并没有给出当遇到空格或者别的符号的处理方法 ,又比如代码只给出了当字符是在a到z的情况下的解决方法 ,而从A到Z则没有给出等等。因此 ,还有很多地方还可以进行改进:1.可以在开始设置一个选择 ,是进行加密还是解密;2.可以将key设为一个整型变量 ,在程序运行开始时 ,需要用户输入key值 ,再根据key值进行加密解密。这样 ,凯撒密码就可以变得更加灵活。总体来说 ,从开始编写、修改凯撒密码的程序到最终调试成功 ,还算比较顺利 ,也体会到了一点密码学的趣味。八、 参考文献1步山岳 ,张有东计算机信息安全技术 ,2005:1723 4 http:/foxdie.org/zh/archives/965 http:/zh.wikipedia.org/wiki/%E5%87%AF%E6%92%92%E5%AF%86%E7%A0%81

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!