歡迎來到天天文庫
瀏覽記錄
ID:24932289
大?。?5.50 KB
頁數:4頁
時間:2018-11-17
《仿射密碼實驗報告》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、實驗報告姓名:1111學號:22222班級:2222日期:2013211古典密碼(仿射密碼)一、實驗環(huán)境1.硬件配置:處理器:Corei5M450@2.40GHZ,內存2GB,主硬盤320G2.使用軟件:(1)操作系統(tǒng):win7(2)軟件工具:MicrosoftVisualC++6.0二、實驗設計的相關概念或基本原理1.仿射密碼的基本思想:加法密碼和乘法密碼結合就構成仿射密碼,仿射密碼的加密和解密算法是: C=Ek(m)=(k1m+k2)modn M=Dk(c)=k1(c-k2)modn o仿射密碼具有可逆性的條件是gcd(k,n
2、)=1。當k1=1時,仿射密碼變?yōu)榧臃艽a,當k2=0時,仿射密碼變?yōu)槌朔艽a。 o仿射密碼中的密鑰空間的大小為nφ(n),當n為26字母,φ(n)=12,因此仿射密碼的密鑰空間為12×26=312。三、實驗內容根據實驗原理的介紹,創(chuàng)建一個明文信息,再確定k1,k2,編寫實現程序,實現加密和解密操作。實驗流程圖:四、實驗總結分析關鍵代碼:1.輾轉相除法求y,z的最大公因數:intgcd(inty,intz){intk=0;do{k=y%z;y=z;z=k;}while(k!=0);returny;}2.求a相對于b的逆intNi(in
3、ta,intb){inti=0;while(a*(++i)%b!=1);returni;}1.加密算法if(a[i]>96&&a[i]<123)b[i]=(k1*(a[i]-97)+k2)%26+65;elseif(a[i]>64&&a[i]<91)b[i]=(k1*(a[i]-65)+k2)%26+65;2.解密算法if(b[i]>64&&b[i]<91)tmp=Ni(k1,26)*((b[i]-65)-k2);if(tmp<0)a[i]=tmp%26+26+97;elsea[i]=tmp%26+97;結果顯示:5.小結仿射密碼的加
4、密較一般的古典密碼更難以破解一些,因為它的密鑰空間相對較大。在研究加密思想的過程中,我編程遇到的主要難題是如何求逆元的過程。我在不斷查詢各種資料,復習了線性代數的相關知識以后,決定將幾種求法都上機調試了一遍,并參考了前人編寫的各種代碼實現方法,最終選定了其中一種我認為簡單易行的方法。由于我設置了要求輸入明文或者密文時以“#”號結尾,故當我嘗試著故意忘記輸入結尾符號時,發(fā)現程序出現不可預知的錯誤,會跳出亂碼。由此我體會到,一個好的開發(fā)軟件必須從用戶的角度,考慮各種用戶可能輸入的各種情況,進行報錯或者修正,這樣才具有可靠性。
此文檔下載收益歸作者所有