RSA加密解密算法_第1頁
RSA加密解密算法_第2頁
RSA加密解密算法_第3頁
RSA加密解密算法_第4頁
RSA加密解密算法_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、網(wǎng)絡(luò)安全實驗設(shè)計報告RSA加密解密算法學(xué)院(系):班 級:組 另比指導(dǎo)教師:i、實驗設(shè)計的目的當(dāng)前最著名、應(yīng)用最廣泛的公鑰系統(tǒng) RSA是在1978年,由美國麻省理工學(xué) 院(MIT)的Rivest、Shamir和Adleman在題為獲得數(shù)字簽名和公開鑰密碼系統(tǒng) 的方法的論文中提出的。RSA算法是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法,因此它為公用網(wǎng)絡(luò)上信息的加密和鑒別提供了一種基本的方法。它通常是先生成一對 RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚 至可在網(wǎng)絡(luò)服務(wù)器中注冊, 人們用公鑰加密文件發(fā)送給個人, 個人就可以用私鑰 解密接受。為提高保密強度,R

2、SA密鑰至少為500位長,一般推薦使用1024位。公鑰加密算法中使用最廣的是RSA RSA算法研制的最初理念與目標(biāo)是努力 使互聯(lián)網(wǎng)安全可靠,旨在解決DES算法秘密密鑰的利用公開信道傳輸分發(fā)的難 題。而實際結(jié)果不但很好地解決了這個難題; 還可利用RSA來完成對電文的數(shù)字 簽名以抗對電文的否認(rèn)與抵賴; 同時還可以利用數(shù)字簽名較容易地發(fā)現(xiàn)攻擊者對 電文的非法篡改,以保護數(shù)據(jù)信息的完整性。此外,RSA加密系統(tǒng)還可應(yīng)用于智能 IC 卡和網(wǎng)絡(luò)安全產(chǎn)品。二、RSA 算法的編程思路1. 確定密鑰的寬度。2. 隨機選擇兩個不同的素數(shù)p與q,它們的寬度是密鑰寬度的1/2。3. 計算出 p 和 q 的乘積 n 。4

3、. 在2和(n)之間隨機選擇一個數(shù)e , e 必須和 (n)互素,整數(shù)e 用做加密密鑰(其中 (n )=(p-1)*(q-1)。5. 從公式ed = 1 mod(n)中求出解密密鑰 d 。6. 得公鑰( e , n ) , 私鑰 (d , n) 。7. 公開公鑰,但不公開私鑰。8. 將明文P (假設(shè)P是一個小于n的整數(shù))加密為密文C,計算方法為:C = Pe mod n9. 將密文C解密為明文P,計算方法為:P = Cd mod n然而只根據(jù)n和e (不是p和q)要計算出d是不可能的。因此,任何人都 可對明文進(jìn)行加密,但只有授權(quán)用戶(知道 d)才可對密文解密三、程序?qū)崿F(xiàn)流程圖:1、密鑰產(chǎn)生模塊

4、:32、解加密流程模塊:計鏗 ao_la-在2到ao_la £口1隨機選擇一個和ao.al互幸的加密密朝e已知u和曰D_la.利用ed = 1 modaO._la求出解富密鑰d計算 model *- p * q得出 公鑰艾K e, model ) 私鑰池d?mcidel)打開要籤密的密文從密文中請出 加密過的明文對密文影式的明文擴展 吝進(jìn)行解密.并1尋解密得 到的擴展名與新明文的 文件茗連接咸新明文的 全名fflM文的全各 創(chuàng)建一牛文件從密文中謹(jǐn)出 固定長度的數(shù) 據(jù)劉密交鍰仲1對密文緩沖中的 數(shù)據(jù)眸密,結(jié)果存 入明文緩沖3S將明殳緩沖區(qū)中 的解密貉果寫入 新朋文"丟中的數(shù)汩

5、*NN部讀出了嗎?煩新明文卻密文(結(jié)束)5三、 心得體會通過做此次課程設(shè)計,對 RSA加密解密算法有了更近一步的了解。 RSAS 過使用公鑰加密、私鑰解密,完成了乙方到甲方的一次數(shù)據(jù)傳遞, 通過私鑰加密、 公鑰解密, 同時通過私鑰簽名、 公鑰驗證簽名, 完成了一次甲方到乙方的數(shù)據(jù)傳 遞與驗證,兩次數(shù)據(jù)傳遞完成一整套的數(shù)據(jù)交互!掌握了 RSA算法的基本原理、 體驗應(yīng)用效果, 以及如何判斷一個數(shù)是否為素數(shù), 以及用擴展的歐幾里得算法求 乘法逆元問題, 以及解密和加密算法。 雖然中間遇到了一些難題, 但是在老師及 同學(xué)的幫助下,順利完成此次課程設(shè)計。四、程序附錄: 判定一個數(shù)是否為素數(shù) bool t

6、est_prime(Elemtype m) if (m <= 1) return false;else if (m = 2) return true;else for(int i=2; i<=sqrt(m); i+) if(m % i) = 0) return false;break;return true;求最大公約數(shù)Elemtype gcd(Elemtype a, Elemtype b) order(a,b);int r;if(b = 0) return a;else while(true) r = a % b;a = b;b = r;if (b = 0) return a;

7、break; 用擴展的歐幾里得算法求乘法逆元Elemtype extend_euclid(Elemtype m, Elemtype bin) order(m,bin);Elemtype a3,b3,t3;a0 = 1, a1 = 0, a2 = m;b0 = 0, b1 = 1, b2 = bin;if (b2 = 0) return a2 = gcd(m, bin);if (b2 =1) return b2 = gcd(m, bin);while(true) if (b2 =1) return b1; break;int q = a2 / b2; for(int i=0; i<3; i

8、+) ti = ai - q * bi; ai = bi;bi = ti; 加密void encrypt() if(flag = 0) cout<<"setkey first:"<<endl; produce_key();label3: cout<<"input m:" cin>>m; while (!cin) cin.clear();char a; cin>>a;cout<<"wrong input,Please enter an integer !"<&

9、lt;endl; goto label3;c = modular_multiplication(m,pu.e,pu.n); cout<<"c is:"<<c<<endl;解密void decrypt() if(flag = 0) cout<<"setkey first:"<<endl; produce_key();label4: cout<<"input c:" cin>>c;while (!cin) cin.clear(); char a; cin>>a;cout<<"wrong input,Please

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論