下载此文档

凯撒密码的加密和解密.doc


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍

: .
凯撒密码的加密和解密
LT
《计算机数据安全》课程
《计算机数据安全》课程
《计算机数据安全》课程
《计算机数据安全》课程
对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。
加密解密算法
恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:
明文: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
操作系统
Windows ,
二、 思路以及算法分析
定义两个字符数组char p[1000]和char c[1000],用来存放明文和密文。
定义一个key,表示移位的个数。这是加密解密的关键。
综合考虑到在密表尾部的字母加密或解密的时候会循环移动到密表头部,所以加密、解密语句分别为:
c[i]=(p[i]-'a'+key)%26+'a' 向后移动key
p[i]='z'-('z'+key-c[i])%26 向前移动key
三、 源程序代码
#include<>
void main()
{
char p[1000];
char c[1000];
int key,i,m;
key=5; /*定义一个移位个数为5,即加密向右移5位,解密则相反*/
printf("please input the Plaintext: \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("the Ciphertext is:\n%s\n",c); /*输出加密后的密文*/
printf("please input the Ciptertext:\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("the Plaintext is:\n%s\n",p); /*输出解密后的明文*/
return;
}
四、 运行结果分析
试对明文security进行加密,再将其解密:
输入明文 security:
回车后,输出加密后的密文:xjhzwnyd
输入security的密文“xjhzwnyd”:
回车后出现解密后的明文security:
五、 总结与不足
程序是在几个小时内测试运行成功的。凯撒密码是密

凯撒密码的加密和解密 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人916581885
  • 文件大小4.94 MB
  • 时间2021-08-02