這是課程學習中的乙個作業,把手寫過程轉成程式實現
4、 已知rsa演算法中,素數p=5,q=7,模數n=35,公鑰e=5,明文為bed,對明文進行加解密,使用手工完成rsa公開秘鑰密碼體制演算法加密運算。字母數字對映表如下:
可以參考, 用例項給新手講解rsa加密演算法
但並不保證網頁內容完全正確,請自行判斷
加解密過程:
de*d = 5*d
(e*d)mod(p-1)(q-1)= (5*d) mod 215
521010315
1542020
5
25
1
由此可得d = 5。 字母
abcd
efgh
ijkl
m碼值0102
03
04
05
06
0708
0910
1112
13字母no
pqrs
tuvw
xyz碼值
1415
1617
1819
2021
2223
2425
26明文bed數位化,即為:02,05,04
**簡單rsa加解密演算法
*hb*需輸入p,q,e
*/#include
#include
using namespace std;
/**判斷素數
*/bool isprime
(int n)
//判斷互質
bool ismutuality
(int e,
int fn)
//計算d
intgetthed
(int e,
int fn)
//英文數位化
//英文小寫
void
chartonum
(char
*str,
int*num,
int n)
//數字轉英文
//英文小寫
void
numtochar
(int
*num,
char
*str,
int n)
}//模指數n運算
intfmod
(int c,
int n,
int e)
return c;
}int num[
100]
;//密文陣列最長100
void
rsa(
int p,
int q,
int e,
char
*str)
cout<
}//*arrnum 密文陣列
void
dersa
(int p,
int q,
int e,
int len)
cout<<
"\n";if
(len<=0)
return;if
(!(isprime
(p)&&
isprime
(q))
)return
;//非素數
int n = p*q;
int fn =
(p-1)*
(q-1);
if(!ismutuality
(e,fn)
)return
;//e和fn不互質
int d =
getthed
(e,fn)
;//計算d
cout<<
"公鑰"
<<
"("<
","<
")"<
cout<<
"金鑰"
<<
"("<
","<
")"<
cout<<
"解密後明文陣列:"
<
for(
int i=
0;i) cout<
char str[
100]
;numtochar
(num,str,len)
; cout<<
"解密後明文:"
<
cout<
}int
main()
網路安全 練習RSA演算法
已知rsa演算法中,素數p 5,q 7,模數n 35,公鑰e 5,明文為bed,對明文進行加解密,使用手工完成rsa公開秘鑰密碼體制演算法加密運算。字母數字對映表如下 請參考 1 設計公私金鑰 e,n 和 d,n 根據題設,p 5,q 7,故 模數n 5 7 35 f n p 1 q 1 4 6 2...
網路安全 6 安全體系(二) RSA演算法詳解
文章是從網上覆制過來的,原文有很多錯別字和錯誤的地方,我在這裡已經更正了,可直接閱覽。另外我還在文中新增了一些注釋,以便初學者能更好更快的理解。本文主要講述rsa演算法使用的基本數學知識 秘鑰的計算過程以及加密和解密的過程。rsa公鑰加密演算法是1977年由羅納德 李維斯特 ron rivest 阿...
c 實現rsa演算法 RSA演算法實現過程
rsa演算法是實現非對稱加密的一種演算法,其用到很多有關數論的內容,在此我們不多討論。而將目光聚焦於演算法的實現過程。rsa過程 第二步 計算n a b 61 53 3233 第三步 計算 a 1 b 1 60 52 3120 第四步 選擇與3120互質的乙個數e 17,這個e也就是我們的公鑰,需要...