凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移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的加密方法即为:
En(x)=(x+n)mod26{\displaystyle E_{n}(x)=(x+n)\mod 26}
解密就是:
Dn(x)=(x−n)mod26{\displaystyle D_{n}(x)=(x-n)\mod 26}
凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母 A 将变为 C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。
因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文: “Jgnnq” 。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位 变为“Hello” 。这里,移动的位数“2”是加密和解密所用的密钥。
该程序既可用于加密又可用于解密。只要传入明文和偏移量即可加密,解密需要传入密文和负的偏移量就可以解密。
输出的结果:
凯撒密码由于加解密比较简单,密钥总共只有 26 个,攻击者得到密文后即使不知道密钥,也可一个一个地试过去,最多试 26 次就可以得到明文。
这里不光根据 offset 偏移进行加密,还加上了字符所在的下标进行混合加密。
输出的结果:
密钥k=5;则凯撒加密之后得到的密文为:infsemnxmfslbz
凯撒密码:简单来说,就是把明文的字母,向后移密钥位,如次题就是向后移5位,所以d后移五位是i,i后移五位是n;依次类推,得到最后的密文。
已知凯撒密码的计算公式为 f(a)=(a+k) mod n,设k=3,n=26,明文P=COMPUTERSYSTEM,求密文。解:明文字母代码表如下如下:ABCDEFGHIJKLM0123456789101112NOPQRSTUVWXYZ13141516171819202122232425由于k=3,对于明文P=COMPUTERSYSTEMf(C)=(2+3) mod 26=5=Ff(O)=(14+3) mod 26=17=Rf(M)=(12+3) mod 26=15=Pf(P)=(15+3) mod 26=18=Sf(U)=(20+3) mod 26=23=Xf(T)=(19+3) mod 26=22=Wf(E)=(4+3) mod 26=7=Hf(R)=(17+3) mod 26=20=Uf(S)=(18+3) mod 26=21=Vf(Y)=(24+3) mod 26=1=Bf(S)=(18+3) mod 26=21=Vf(T)=(19+3) mod 26=22=Wf(E)=(4+3) mod 26=7=Hf(M)=(12+3) mod 26=15=P所以密文C=Ek(P)=FRPSXWHUVBVWHP