仿射密碼破解——再別康橋
這裡有用仿射加密的一段詩歌密文(空格標點等沒有加密),請嘗試還原為明文並翻譯為中文
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
將明文利用翻譯軟體進行翻譯,得到下列結果:
所以,這一段密文解密出來,是徐志摩的再別康橋這一首詩!