RSA加密算法的編程實(shí)現(xiàn)論文

RSA加密算法的編程實(shí)現(xiàn)論文

ID:37904612

大小:17.26 KB

頁數(shù):4頁

時間:2019-06-02

RSA加密算法的編程實(shí)現(xiàn)論文_第1頁
RSA加密算法的編程實(shí)現(xiàn)論文_第2頁
RSA加密算法的編程實(shí)現(xiàn)論文_第3頁
RSA加密算法的編程實(shí)現(xiàn)論文_第4頁
資源描述:

《RSA加密算法的編程實(shí)現(xiàn)論文》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、RSA加密算法的編程實(shí)現(xiàn)論文RSA算法是在1978年由美國麻省理工學(xué)院三位密碼學(xué)專家RonRivest、AdiShamir和LeonardAdleman發(fā)明的。RSA算法是一種典型的公開密鑰體制算法,它的發(fā)明是對密碼學(xué)的一個杰出貢獻(xiàn)。RSA算法得到了世界上最廣泛的應(yīng)用,并在1992年被ISO國際標(biāo)準(zhǔn)化組織正式納入國際標(biāo)準(zhǔn)[1][3]。與傳統(tǒng)的對稱密碼算法相比,RSA算法最大貢獻(xiàn)是為實(shí)現(xiàn)數(shù)字簽名和數(shù)字證實(shí)提供了手段,為現(xiàn)代網(wǎng)絡(luò)安全技術(shù)、電子商務(wù)、電子政務(wù)等打下了堅(jiān)實(shí)的基礎(chǔ)。RSA算法實(shí)現(xiàn)(1)在產(chǎn)生公開密鑰

2、前先要選擇兩個不同的素?cái)?shù)p、q,判斷素?cái)?shù)的方法很多,本程序判斷素?cái)?shù)的方法是:設(shè)n從3開始,每次增加2(排除偶數(shù)),除以≤的所有素?cái)?shù),如不存在被整除的數(shù),則n為素?cái)?shù)。(2)有了p、q值,就可以根據(jù)ψ(r)的值選擇一個公開密鑰pk,一般來說密鑰長度越長安全性越好,但密鑰的值應(yīng)小于ψ(r)的值,否則不能正確求出私人密鑰sk。程序中使用了歐幾里德算法求出最大公約數(shù):設(shè)有整數(shù)a、b,a>b>0,先令b為余數(shù),a為除數(shù),用每次余數(shù)為除數(shù),去除以上次的除數(shù),直到余數(shù)為0時,則上次的余數(shù)就是最大公約數(shù)。(3)已知整數(shù)a、

3、r,如果a·b≡1modr成立,也就是a·b的乘積被r除所得的余數(shù)等于1,用歐幾里德擴(kuò)展算法可以求出b。先令a作為余數(shù),r作為上次除數(shù),根據(jù)歐幾里德算法,由數(shù)學(xué)歸納法可以證明出求a的乘逆b的遞推公式如下:b-1=0,b=1b=

4、bj

5、其中j為整數(shù),從1開始,qj是rj/aj的整數(shù)部分,當(dāng)rj/aj的余數(shù)為1時,則a的乘逆b=

6、bj

7、。(4)加密、解密時,由于P=123456789值巨大,直接計(jì)算mamodr的值是很不方便的,使用“平方-乘算法”將極大地提高計(jì)算mamodr的速度。先將a轉(zhuǎn)換為二進(jìn)制數(shù)b,令

8、L為b的二進(jìn)制位數(shù),c=1,“平方-乘算法”偽碼如下:FORI=L-1TO0DO{c=c·cmodr;IFbi=1THENc=c·mmodr;}則c就是mamodr的值,其中bi是b的第i位值。RAS算法舉例下面我們舉一個例子說明RAS加密和解密過程:(1)選素?cái)?shù),如選p=47,q=61。(2)計(jì)算公開模數(shù)r=p×q=4×61=2867。(3)計(jì)算歐拉函數(shù)k。(4)利用求最大公約數(shù)算法等,選擇一個與ψ(r)互質(zhì)的量k,可以選k=167,并令sk=k=167。(5)根據(jù)sk·pk≡1modψ(r),用求乘逆

9、算法求出pk=1223。這樣我們就求出RSA算法3個關(guān)鍵值:r=2876,pk=1223,sk=167(6)加密時,假如明文P=123456789,可以將明文分成3組,即P1=123,P2=456,P3=789。用私人密鑰sk加密時:C1=P1167modr=1770C2=P2167modr=1321C3=P3167modr=1297所以密文C=177013211297。(7)解密時,如用公開密鑰pk解密時,只要計(jì)算:P1=C11223modr=123P2=C21223modr=456P3=C31223m

10、odr=789P=123456789這樣,就將明文還原出來了。以下程序是java編寫的實(shí)現(xiàn)RSA加密及解密的算法importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjava.security.interfaces.RSAPrivateKey;importjava.

11、security.interfaces.RSAPublicKey;importjavax.crypto.Cipher;//RSATest類即為測試類publicclassRSATest{//主函數(shù)publicstaticvoidmain(String[]args){try{RSATestencrypt=newRSATest();StringencryptText="encryptText";//輸入的明文KeyPairkeyPair=encrypt.generateKey();//調(diào)用函數(shù)生成密鑰對,函數(shù)

12、見下RSAPrivateKeyprivateKey=(RSAPrivateKey)keyPair.getPrivate();RSAPublicKeypublicKey=(RSAPublicKey)keyPair.getPublic();byte[]e=encrypt.encrypt(publicKey,encryptText.getBytes());//調(diào)用自己編寫的encrypt函數(shù)實(shí)現(xiàn)加密,byte[]de=encrypt

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。