凯撒密码实验结果分析(凯撒密码算法原理)

2023-02-28 23:19:25 密码用途 思思

凯撒密码

凯撒密码关键的是密匙,密匙也就是一个数字,比如说密匙是1,那对英文单词book这个单词加密,结果就是相应的每个字母在字母表中的序号减去1,比如b在英文单词里排第二位,那加密后就是a,o加密后就是n,依此类推,book加密后就是annj,解密时每个字母的顺序号加1,所对应的字母就是密文。

凯撒密码实验结果分析(凯撒密码算法原理) 第1张

什么是凯撒加密法?

简单的说,就是位移加密。

比如你的密码是ABCDE

然后设置凯撒密码的偏移量为3的话

那加密之后的密码就是DEFGH

C语言读程题,根据图中源程序代码,分析解答下列问题?

(1)while((ch=getchar())!='\n')

使用getchar函数从键盘获取一次按键输入(只是按下一个按钮),如果按的键不是回车(回车键的输入即为'\n'),继续执行循环体内代码。然后回到该行代码,获取下一个按键输入,一直循环下去,直到按下回车为止。总的效果等同于输入任意字符串,以回车键结束。

(2)if((ch='a'ch='z')||(ch='A'ch='Z'))

在ASCII码表中,基本字符通过ASCII码进行编码。字母a到z的ASCII码范围对应为97~122,字母A到Z则对应65~90。所以当输入字符的ASCII码在上述范围之内时,则输入的字符为大小写英文字母。字符的比较即ASCII码的比较。若输入其它字符,直接输出不进行处理。

代表逻辑与,表示两侧的条件同真时为真,否则为假;||代表逻辑或,表示两侧的条件同假时为假,否则为真。例如,必须当字符大于等于'a'并且小于等于'z'时,字符才是小写字母;若字符是小写字母,或者字符是大写字母,则字符是英文字母。

(3)ch+=3

直接对字符的ASCII码进行操作,即可实现字符的转换。这里对字符加3,就实现了字符移位的运算(ASCII码表中小写字母是按照实际顺序排列的,大写字母同理)

(4)if(ch'z'||(ch'Z'ch='Z'+4)) ch-=26

if条件表示对移位后的ch进行判断,若超出字母表范围,因为大小写字母各有26个,只需对ASCII码减26就可以回到字母表开头位置,原理类似于求余运算。

凯撒密码为一种替换密码,此题的加密过程为先进行base64编码,再进行移

在密码学中,恺撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

恺撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为: E(x) = (x + n) mod 26.

解密就是:

D(x) = (x - n) mod 26.

显而易见,一旦确定了某两个字母的对应关系(即n的值),这种移位密码很容易被破解。

因此,为了使密码有更高的安全性,单字母替换密码就出现了。

明码表:A B C D E F G H I J K L M N O P Q 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

但是这种加密方式依然可以破解,根据字母使用频度表,分析密文中的字母频率,将其对照即可破解。

不仅如此,凯撒加密对加密数据也是有要求的,一般情况下,它只支持对基本的英文字母进行加密,如果对中文等亚太地区的文字进行加密,结果可想而知,你的隐私将毫无保留的出现在众人面前。有人说,我们可以扩展这个算法,使它支持所有的文字,这么做是可行的,如果采用同余式的方式实现,代码几乎不怎么需要改动,只要字符集本身是Unicode就可以了。但是这种加密的安全性很难满足应用的要求。如果采用单字母替换的方式,程序将需要构建两个巨大的字符数组去保存他们的映射关系,而且扩展性也不好,当然也是不可行的。这样看来,凯撒加密岂不是一无是处了,其实对于一般的应用,凯撒加密还是足以应付的,只要我们对它稍作改进。

凯撒加密算法(最简单的对称加密)

凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母 A 将变为 C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。

因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文: “Jgnnq” 。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位 变为“Hello” 。这里,移动的位数“2”是加密和解密所用的密钥。

该程序既可用于加密又可用于解密。只要传入明文和偏移量即可加密,解密需要传入密文和负的偏移量就可以解密。

输出的结果:

凯撒密码由于加解密比较简单,密钥总共只有 26 个,攻击者得到密文后即使不知道密钥,也可一个一个地试过去,最多试 26 次就可以得到明文。

这里不光根据 offset 偏移进行加密,还加上了字符所在的下标进行混合加密。

输出的结果: