網路安全 簡單RSA演算法的實現 C

2022-09-08 21:00:22 字數 2450 閱讀 3079

這是課程學習中的乙個作業,把手寫過程轉成程式實現

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

5251

由此可得d = 5。 字母

abcd

efgh

ijkl

m碼值010203

040506

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也就是我們的公鑰,需要...