无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

RSA公鑰密碼的實現(xiàn)

2020-09-04 22:43 作者:喬知洛  | 我要投稿

實驗目的:

(1)幫助學生掌握RSA公鑰系統(tǒng)的密鑰生成、加密和解密的過程,能夠利用所學過的編程語言熟悉RSA公鑰加密算法流程與編程實現(xiàn)加密算法。掌握編程實現(xiàn)實際中問題的方法,提高解決問題的能力。

(2)要求學生掌握算法的程序?qū)崿F(xiàn)的方法,能應用密碼算法的特點,設計合適的交互界面,并能正確實現(xiàn)應用編程。

(3)要求學生掌握用規(guī)范的方法書寫實驗報告。

?

實驗儀器設備/實驗環(huán)境

PC Windows操作系統(tǒng),使用Java語言編程,或者使用數(shù)學軟件MATLAB、Maple編程,以下使用的是Visual C++ 6.0

?

實驗原理

RSA公鑰密碼原理

?

實驗內(nèi)容

解密:

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

????int p,q;//定義p,q

????cout<<"輸入p、q (p、q為質(zhì)數(shù),不支持過大)"<< endl;//輸出"輸入p、q (p、q為質(zhì)數(shù),不支持過大),并且換行

????cin>>p>>q;//輸入p,q

????int m=p*q;//定義m=p*q

????int n=(p-1)*(q-1);//定義n=(p-1)*(q-1)

????int e;//定義e

????cout<<"輸入e (e與"<<n<<"互質(zhì)) 且 1<e<"<<n<<endl;//輸出 "輸入e (e與"<<n<<"互質(zhì)) 且 1<e<

????cin>>e;//輸入e

????int d;//定義d

????for(d=1;;d++)

????{

????????if(d*e%n==1)

??????????break;

????}

//循環(huán) 找出d使得ed=1(mod n)

????cout<<endl<<endl;

?

????cout<<"{ "<<e<<","<<m<<" }"<<"為公鑰"<<endl;

????cout<<"{ "<<d<<","<<m<<" }"<<"為私鑰"<<endl;

?

????cout<<endl<<endl;

????int after;

????cout<<"輸入密文"<<endl;

????cin>>after;

????int before;

????int i;

????before=after%n;

????for(i=1;i<d;i++)

????????before=(before*after)%m;

????//計算C^d=m(mod n)

????cout<<"明文為"<<endl;

????cout<<before<<endl;

}

結(jié)果:

加密:

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

????int p,q;//定義p,q

????cout<<"輸入p、q (p、q為質(zhì)數(shù),不支持過大)"<< endl;//輸出"輸入p、q (p、q為質(zhì)數(shù),不支持過大),并且換行

????cin>>p>>q;//輸入p,q

????int m=p*q;//定義m=p*q

????int n=(p-1)*(q-1);//定義n=(p-1)*(q-1)

????int e;//定義e

????cout<<"輸入e (e與"<<n<<"互質(zhì)) 且 1<e<"<<n<<endl;//輸出 "輸入e (e與"<<n<<"互質(zhì)) 且 1<e<

????cin>>e;//輸入e

????int d;//定義d

????for(d=1;;d++)

????{

????????if(d*e%n==1)

??????????break;

????}

//循環(huán) 找出d使得ed=1(mod n)

????cout<<endl<<endl;

?

????cout<<"{ "<<e<<","<<m<<" }"<<"為公鑰"<<endl;

????cout<<"{ "<<d<<","<<m<<" }"<<"為私鑰"<<endl;

?

????cout<<endl<<endl;

????int before;

????cout<<"輸入明文"<<endl;

????cin>>before;

????int after;

????int i;

????after=before%n;

????for(i=1;i<e;i++)

????????after=(after*before)%m;

????//計算m^e=C(mod n)

????cout<<"密文為"<<endl;

????cout<<after<<endl;

}

結(jié)果:

實驗心得

RSA算法基于一個十分簡單的數(shù)論事實:將兩個大素數(shù)相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰
整個加密解密的過程大概是;首先假設甲方要向乙方發(fā)送消息,那么甲方需要對消息加密,乙方需要對消息解密,加密算法分為對稱性和非對稱性2種算法,根據(jù)加密解密所使用的秘鑰相不相同來區(qū)分,我們要討論的RSA算法就是非對稱性的,也就是加密的公鑰和解密的私鑰是不同的。由于公鑰是公開的,可以給別人看到所以不需要保護,只需要保護好私鑰不被竊取即可,通常私鑰的竊取都是在傳輸?shù)倪^程中進行的,所以只要防止私鑰的傳輸就好了。因此甲方發(fā)送消息給乙方,所以乙方產(chǎn)生公鑰和私鑰,之后將公鑰公開,用于甲方對消息加密,然后乙方自己擁有私鑰,只需要使用私鑰解密即可。


RSA公鑰密碼的實現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
内黄县| 泰安市| 噶尔县| 都昌县| 禄丰县| 山丹县| 宣城市| 界首市| 余姚市| 广昌县| 蓬安县| 德化县| 衡阳市| 保德县| 青州市| 许昌县| 万源市| 大埔县| 威宁| 琼海市| 达州市| 独山县| 元氏县| 大关县| 黄浦区| 黄陵县| 安远县| 北票市| 会同县| 仲巴县| 永吉县| 揭西县| 福贡县| 和田市| 建阳市| 八宿县| 荃湾区| 门源| 武夷山市| 玉龙| 新密市|