




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計報告課程名稱:基于非對稱密碼體系的數(shù)據(jù)加密解密(RSA)時間:2016.11.21-2016.11.25目錄一、背景3二、RSA算法52.1算法描述52.2 模算術(shù)里的求冪運算62.3用公鑰進行有效運算72.4用私鑰進行有效運算7三、軟件的設(shè)計83.1軟件總體設(shè)計83.2軟件詳細設(shè)計93.3類與主要函數(shù)113.4主要代碼11四、運行與調(diào)試154.1運行效果154.2調(diào)試問題17五、經(jīng)驗與總結(jié)175.1心得與體會175.2致謝17六、參考文獻17一、背景隨著計算機信息技術(shù)的蓬勃發(fā)展,作為信息采集、存儲、處理和傳輸?shù)拿襟w,計算機及網(wǎng)絡(luò)應(yīng)用逐步延伸到社會生活的方方面面。當人類越來越感受到計算
2、機系統(tǒng)功能的強大,不得不感嘆于信息技術(shù)帶來的方便快捷的同時,各種憂慮也漸漸產(chǎn)生:已經(jīng)習慣性依賴于計算機的人們離開它還能生存嗎?信息戰(zhàn)將對國防安全、軍事領(lǐng)域產(chǎn)生什么影響?信息詐騙和其他信息犯罪將如何改變?nèi)藗兊娜粘I? 這些問題都屬于計算機信息安全的范疇。起初,計算機系統(tǒng)的安全主要是指硬件的安全保護。隨著信息所發(fā)揮的價值日益為人們所了解,人們的目光轉(zhuǎn)移到在計算機系統(tǒng)中存儲、傳輸?shù)男畔⒌陌踩ǚ乐剐畔⑿孤┖头欠礁牡?。?shù)據(jù)庫集中存放和管理大量信息,其安全性對于整個計算機信息系統(tǒng)至關(guān)重要。為了保證數(shù)據(jù)安全,人們在不同層面運用了各種安全措施,這些防范措施分別可以在一定程度上防止某種安全威脅。但是,
3、在操作系統(tǒng)、數(shù)據(jù)庫和網(wǎng)絡(luò)的層層防護之下,仍然無法保證數(shù)據(jù)庫數(shù)據(jù)的安全。因為通常數(shù)據(jù)庫中的數(shù)據(jù)最終是以文件形式存儲在計算機上的,這些文件大部分是多個用戶可讀可寫的,一旦網(wǎng)上黑客通過某種途徑進入系統(tǒng)就可以直接讀取數(shù)據(jù)文件或存儲介質(zhì),從中竊取數(shù)據(jù)或利用非法軟件篡改數(shù)據(jù)庫文件內(nèi)容。信息的傳輸則通過公共信道。這些計算機系統(tǒng)和公共信道是不設(shè)防的,是很脆弱的,容易受到攻擊和破壞,信息的丟失不容易被發(fā)現(xiàn),而后果是極其嚴重的。如何保護信息的安全已不僅僅是軍事和政府部門感興趣的問題,各企事業(yè)單位也愈感迫切。而密碼是有效而且可行的保護信息安全的辦法,有效是指密碼能夠做到使信息不被非法竊取,不被篡改或破壞,可行是說它
4、需要付出的代價是可以接受的。因此密碼學(xué)的研究就成為一個重要的來解決信息安全問題的一種手段了,而且有著重要的地位。二、RSA算法2.1算法描述Diffie和Hellman在其早期的論文DIFF76B中提出了一種新的密碼學(xué)方法,事實上,它對密碼學(xué)家提出了一種挑戰(zhàn),即要求尋找滿足公鑰體制要求的密碼算法。之后很多算法被提出,其中有一些剛提出時似乎很有前途,但后來都被攻破。MIT的Ron Rivest,Adi Shamir和Adleman于1977年提出并于1978年首次發(fā)表的算法RIVE78,可以說是最早提出的成功的公鑰算法之一。Rivest-Shamir-Adleman(RSA)算法自其誕生之日起就
5、稱為比廣泛接受且被實現(xiàn)的通用的公鑰加密方法。經(jīng)過多年的分析和研究,在眾多的公開密鑰加密算法中,RSA加密算法最受推崇,它也被推薦為公開密鑰數(shù)據(jù)加密標準。由數(shù)論知識可知,若將一個具有大素數(shù)因子的合數(shù)進行分解是很困難的,或者說這個問題的計算量是令人望而生畏的,而RSA加密算法正是建立在這個基礎(chǔ)上的。在RSA加密算法中,個用戶A可根據(jù)以下步驟來選擇密鑰和進行密碼轉(zhuǎn)換:(1)隨機的選取兩個不同的大素數(shù)p和q(一般為100位以上的十進制數(shù)),予以保密;(2)計算n=p*q,作為用戶A的模數(shù),予以公開;(3)計算歐拉(Euler)函數(shù)z=(p-1)*(q-1),予以保密;(4)隨機的選取d與z互質(zhì),作為A
6、的公開密鑰;(5)利用Euclid算法計算滿足同余方程e*d1modz的解d,作為用戶A的保密密鑰;(6)任何向用戶A發(fā)送信息M的用戶,可以用A的公開模數(shù)D和公開密鑰e根據(jù)C=Me mod n得到密文C;2.2 模算術(shù)里的求冪運算在RSA中,加密和解密都需要計算某整數(shù)的模n整數(shù)次冪,如果先球場整數(shù)的冪,在對n取模,那么中間結(jié)果會非常大。幸運的是,正如前面的例子所示,我們可利用模運算的下列性質(zhì)來計算模冪運算:(a mod n)*(b mod n)mod n = (a*b) mod n這樣我們將中間結(jié)果對n取模,這樣使得計算切實可行。因為RSA中所用到的指數(shù)很大,所有還應(yīng)考慮冪運算的效率問題。為說
7、明如何增加效率,以計算x16為例。若直接計算則需進行15此乘法:x16= x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x8 = (x)(x2)(x8),我們先計算 x mod n,x2 mod n, x8 mod n,在計算(x mod n)*(x2mod n)*+2+如果重復(fù)計算每個中間結(jié)果的平方,得到x2,x4,x8和x16,那么只需要4次乘法即可計算出x16。又比如,對于整數(shù)x和n,計算x11mod n。由于x11 = x1(x8 mod n)mod n 。1.b0,則 b =-更一般地,假定我們要計算ab,其中a和b是正整數(shù)。若將b表示為二進制數(shù)bkbk2.3用公鑰進行
8、有效運算為了加快RSA算法在使用公鑰時的運算速度,通常都會選擇一個特定的e,大多數(shù)情況下選e為65 537(216+1),另外兩個常用的選擇是3和17。這些指數(shù)里都只有兩個位,所以求冪運算時需要的乘法次數(shù)極小化了。然而,若指數(shù)太小,如e = 3,RSA 甚至會遭受一些簡單的攻擊。假設(shè)有三個不同的RSA用戶,他們都使用指數(shù)e=3,但他們的模數(shù)n卻各不相同,即n1,n2,n3.現(xiàn)在有一個用戶A以加密方式給他們?nèi)齻€發(fā)送了相同的消息M,則三個密文為:C1 = M3 mod n1 ,C2 = M3 mod n2,C3 = M3 mod n3。很有可能n1,n2,n3是兩兩互素的,所以運用中國剩余定理(C
9、RT)可以計算出M3 mod (n1n2n3)。根據(jù)RSA的規(guī)則,M應(yīng)該比模數(shù)n要小,所以有M3 < (n1n2n3),從而攻擊者只需要計算出M3的三次立方根就可以了。2.4用私鑰進行有效運算我們不能為了計算的效率而簡單地選擇一個小數(shù)值的d。D的值太小容易遭受窮舉攻擊和其他形式的密碼分析WIEN90。然而,運用中國剩余定理可以加快運算速度。我們希望計算M = Cd mod n。先定義一些中間結(jié)果:Vp=Cd mod p三、軟件的設(shè)計3.1軟件總體設(shè)計概要:運用Java編寫出一個加密和解密的密鑰對一段明文進行加密和解密來達到隱秘的傳送信息的目的,運用RSA非對稱密碼算法和系統(tǒng)來完成整個設(shè)計
10、要求經(jīng)過上面論述,我們可以將對軟件的要求總結(jié)如下: 可以按要求的位數(shù)生成非對稱密鑰。 可以保存密鑰和裝載密鑰,將他們拿來加解密 。 可以用指定密鑰以RSA算法加密任意一個文件,加密生成的數(shù)據(jù)為純文本。 提示信息完整、操作舒適、圖形界面雅觀按上述描述,各層的關(guān)系如下:根據(jù)以上分析,一般來說,需要進行編碼的程序有RSA密鑰生成 RSA加密解密 對數(shù)據(jù)進行加密解密操作各環(huán)節(jié)必要的數(shù)據(jù)編碼轉(zhuǎn)換 圖形操作界面。3.2軟件詳細設(shè)計程序結(jié)構(gòu)示意圖:界面原型:3.3類與主要函數(shù)Privatekey 私鑰類publicKey 公鑰類RSAGeneratorKey 產(chǎn)生N,私鑰,公鑰的類3.4主要代碼packag
11、e com.py.model;import java.math.BigInteger;import java.security.SecureRandom;import java.util.Date;public class RSAGeneratorKey private static BigInteger x; / 存儲臨時的位置變量x,y 用于遞歸private static BigInteger y;/ 歐幾里得擴展算法public static BigInteger ex_gcd(BigInteger a, BigInteger b) if (Value() = 0) x =
12、new BigInteger("1");y = new BigInteger("0");return a;BigInteger ans = ex_gcd(b, a.mod(b);/ 由于我們只求乘法逆元 所以這里使用BigInteger.One,實際中如果需要更靈活可以多傳遞一個參數(shù),表示模的值來代替這里x = x.multiply(BigInteger.ONE.divide(gcd);k = k.abs();BigInteger ans = x.mod(k);if (pareTo(BigInteger.ZERO) < 0)ans = ans.ad
13、d(k);return ans;public static RsaKeyPair generatorKey(int bitlength) SecureRandom random = new SecureRandom();random.setSeed(new Date().getTime();BigInteger bigPrimep, bigPrimeq;while (!(bigPrimep = BigIbablePrime(bitlength, random).isProbablePrime(1) continue;/ 生成大素數(shù)pwhile (!(bigPrimeq =
14、BigIbablePrime(bitlength, random).isProbablePrime(1) continue;/ 生成大素數(shù)qreturn new RsaKeyPair(publicKey, privateKey);package com.py.action;import com.py.model.RSAGeneratorKey;import com.py.model.RsaKeyPair;public class Dealaction RsaKeyPair keyPair = RSAGeneratorKey.generatorKey(256);public
15、interface CallBack / 為了不拖累主線程public void getResutl(String publickey, String privatekey, String N);).start();package com.py.tool;import java.io.UnsupportedEncodingException;BigInteger encrypted = temp.modPow(key.getB(), key.getN();return Base64.encodeBase64String(encrypted.toByteArray();四、運行與調(diào)試4.1運行效果4.2調(diào)試問題在調(diào)試過程中遇到很多問題,比如如何生成那個大素數(shù),到底應(yīng)該多少位才比較合適,然后一直在思考,最后用了bigInteger來解決,bigInteger這個類提供了很多好的數(shù)據(jù)位操作的方法,很實用。五、經(jīng)驗與總結(jié)5.1心
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 招標采購培訓(xùn)課件
- 2024-2025學(xué)年山西省運城市實驗中學(xué)七年級上學(xué)期期中生物學(xué)試卷
- 2024-2025學(xué)年山東省淄博市臨淄區(qū)六年級上學(xué)期期中生物試卷
- CQM年終匯報工作總結(jié)
- 幼師傳統(tǒng)教育體系構(gòu)建與實踐
- 廣州松田職業(yè)學(xué)院《病原生物學(xué)上》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國民用航空飛行學(xué)院《史學(xué)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 安徽工業(yè)職業(yè)技術(shù)學(xué)院《中國近現(xiàn)代政治制度》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州華商學(xué)院《現(xiàn)代食品分析技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江商業(yè)職業(yè)技術(shù)學(xué)院《藥廠設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 數(shù)字美的智慧工業(yè)白皮書-2023.09
- 橋梁施工進度圖
- 某啤酒廠安全現(xiàn)狀評價設(shè)計報告書模板
- 在線語言學(xué)習行業(yè)競爭格局分析
- 廣西桂林市2022-2023學(xué)年高二下學(xué)期期末質(zhì)量檢測數(shù)學(xué)試題(含答案解析)
- 內(nèi)墻抹灰安全技術(shù)交底
- 中學(xué)美術(shù)校本教材《素描》
- 國開2023年春《理工英語1》機考網(wǎng)考期末復(fù)習資料參考答案
- 《幼兒生活活動保育》課程標準
- 年出欄5萬頭生豬養(yǎng)殖場建設(shè)項目及年出欄4800頭生豬養(yǎng)殖基地建設(shè)項目建議書
- OIF-CEI-04.0OIF-CEI-04.0高速電口標準
評論
0/150
提交評論