① 下面密文是用模26下的仿射密碼加密的gzyyf,明文以he開頭,試解密消息
hellk.仿射密碼公式是:密文=明文剩於密鑰1加密鑰2然後和與26取余,即e(x)=(ax+b)mod26. 從提示he開頭,代入即g=(ha+b)mon26,z=(ea+b)mod26,可求得a=11. b=7.,從而得出其它結果。註:公式中,a表示密鑰1,且與26互質,即取值是1.3.5.7...23.25共13個,b是密鑰2,取值范圍是0-25.0-25對應英文字母a-z. 所以h=7,e=4,其它類推。還有,結果不應該是hello? 算出來是hellk.
② 仿射密碼怎樣實現選擇明文攻擊,唯密文攻擊,已知明文攻擊
密碼學的知識,不太了解,幫你找了下
http://book.csdn.net/bookfiles/884/10088427852.shtml
往下一點就找到了,網頁有點亂~~
6. 仿射密碼
把加法密碼和乘法密碼聯合起來,就得到了所謂的仿射密碼(affine cipher)—— 兩種密碼與一對密鑰的組合。乘法密碼使用第一個密鑰,加法密碼使用第二個密鑰。如圖3-11所示,仿射密碼其實就是被先後使用的兩種密碼。我們本來可以提出一種有關加密和解密的復雜運算,如C = (P ′ k1 + k2) mod 26和P = ((C - k2) ′ k1-1) mod 26。然而,我們用臨時結果(T)表示兩種單獨的運算,以表明無論什麼時候使用密碼組合,均需確保在行的另一端要有一個逆,該逆在加密和解密過程中使用的順序是相反的。如果加法是加密過程中的最終運算,那麼減法就是解密過程中的初始運算。
在仿射密碼中,明文P和密文C的關系是
圖3-11 仿射密碼
例3.9
仿射密碼使用密鑰對,在該密鑰對中第一密鑰來自集合Z26*,第二密鑰來自集合Z26。密鑰域的長度是26 ′ 12 = 312。
例3.10
運用仿射密碼對帶有密鑰對(7, 2)的信息「hello」進行解密。
解答
對乘法密鑰使用7,對加法密鑰使用2,就會得到「ZEBBW」。
例3.11
在模26中,用仿射密碼對具有密鑰對(7, 2)的信息「ZEBBW」進行解密。
解答
把- 2 o 24 (mod 26)的加法逆加在接收的密文中。然後,再用結果乘以7–1 o 15 (mod 26)的乘法逆,就求出了明文字元。因為2在集合Z26中有一個加法逆,7在集合Z26*中有一個乘法逆,明文正好就是我們在例3.10中所用的。
③ 仿射加密法的舉例
設仿射加密函數是 ,由上表知:11-1mod(26)=19,所以相應的仿射解密函數是 。
若加密明文是sorcery,首先把明文每個字母轉換為數字18,14,17,2,4,17,24。然後對明文進行加密,得密文為welcylk。
④ 仿射加密c語言,以下程序能運行,但出不了結果,求更改。不改形式。!!
#include<iostream>//仿射加密,輸入sorcery-->輸出welcylk
usingnamespacestd;
#include<string.h>
voidFsJiami(chars[99])
{
inti;inta[99];char*p;
p=s;
while(*p!='