仿射密码破解——再别康桥

这里有用仿射加密的一段诗歌密文(空格标点等没有加密),请尝试还原为明文并翻译为中文
Ptfxgj Jnno-afv wn Htzaixojv Tjtxg
Af Yd Mqxzn
Kvif bdxvwsf X wtlv zf svtkv
Tp bdxvwsf tp X htzv qviv;
Bdxvwsf X rtkv jnno-afv
Wn wqv inpf hsndop xg wqv rvpwvig plf.
Wqv jnsovg rxssnrp af wqv ixkvipxov
Tiv fndgj aixovp xg wqv pvwwxgj pdg;
Wqvxi ivcsvhwxngp ng wqv pqxzzvixgj rtkvp
Tsrtfp sxgjvi xg wqv ovuwq nc zf qvtiw.
Wqv csntwxgj qvtiw jinrxgj xg wqv psdojv
Prtfp svxpdivsf dgovi wqv rtwvi;
Xg wqv jvgwsv rtkvp nc Htzaixojv
X rndso av t rtwvi ustgw!
Wqtw unns dgovi wqv pqtov nc vsz wivvp
Qnsop gnw rtwvi adw wqv itxganr cinz wqv plf;
Pqtwwvivo wn uxvhvp tzngj wqv odhlrvvop
Xp wqv pvoxzvgw nc t itxganr-sxlv oivtz.
Wn pvvl t oivtz? Edpw wn unsv t antw dupwivtz
Wn rqviv wqv jivvg jitpp xp zniv kviotgw;
Ni wn qtkv wqv antw cdssf sntovo rxwq pwtisxjqw
Tgo pxgj tsndo xg wqv pusvgoni nc pwtisxjqw.
Adw X htggnw pxgj tsndo
Bdxvwgvpp xp zf ctivrvss zdpxh;
Vkvg pdzzvi xgpvhwp qvtu pxsvghv cni zv
Pxsvgw xp Htzaixojv wngxjqw!
Kvif bdxvwsf X wtlv zf svtkv
Tp bdxvwsf tp X htzv qviv;
Jvgwsf X csxhl zf psvvkvp
Gnw vkvg t rxpu nc hsndo rxss X aixgj trtf

仿射密码的定义:

将加法密码和乘法密码结合就构成了仿射密码,仿射密码的加密和解密算法是:

加密算法:C=Ek(m)=(k1m+k2)modn

解密算法:M=Dk(c)=k1-1(c-k2)modn

仿射密码具有可逆性的条件是gcd(k,n)=1。当k1=0时,仿射密码变成加法密码,当k2=0时,仿射密码变成乘法密码。

解密过程:

统计密文中各字母出现的频率,然后与英文字母出现频率比较,在尝试过程中同时考虑仿射密码的条件。

各个字母出现的频率统计如下:

最大频率的密文字母是小写英文字母v(119次)、小写字母w(67次)、小写字母t(54次)、小写字母p和小写字母x(各52次)……

首先,我们可以猜想v是e的加密,而w是t的加密,因为e和t是两个出现频率最好的字母。e和t对应的数值是4,19,v和w对象的数值是21,22.对于仿射密码有c=(k1m+k2)mod n

所以我们有两个关于未知数的线性方程组:

     21=(4k1+k2)mod 26   即  4k1+k2=26m+21

     22=(19k1+k2)mod 26  即  19k1+k2=26m+22

K是满足0<k<n的正整数。并且k1,k2要和n(26)互素,否则不存在模逆元,不能正确解密。当n为26字母,其中k1,k2的取值可能为1,3,5,7,9,11,15,17,19,21,23,25。

当m=1时,4k1+k2=47,19k1+k2=48,这个方程组有唯一解:k1=7,k2=19

其中gcd(7,26)=1,gcd(19,26)=1,即k-1=15


将明文利用翻译软件进行翻译,得到下列结果:

所以,这一段密文解密出来,是徐志摩的再别康桥这一首诗!

猜你喜欢

转载自blog.csdn.net/zmeilin/article/details/80182014