RSA加密與解密講解

2021-09-29 09:47:51 字數 2065 閱讀 7195

這裡只是講講rsa

rsars

a是怎麼加密以及怎麼解密。

採用r sa

rsars

a的方法後可以得到乙個公鑰(n,

e)

(n,e)

(n,e

)和私鑰(n,

d)

(n,d)

(n,d)。

對於乙個明文a

aa,我們把它加密得到b

bb,b=a

emod

nb=a^e~~mod~~n

b=aemo

dn。我們把b

bb,發給接收者,接收者把b

bb解密:a=b

dmod

na=b^~~mod~~n

a=bdmo

dn即可檢視密文了。

那麼r sa

rsars

a是怎麼做的呢?

首先我們任意選取兩個質數p,q

p,qp,

q,令n=p

qn=pq

n=pq

,然後求出n

nn的尤拉函式r=ϕ

(n

)r=\phi(n)

r=ϕ(n)

。任選乙個小於r

rr且與r

rr互質的數d

dd,求出d

dd在模r

rr意義下的逆元e

ee,然後組成公鑰(n,

e)

(n,e)

(n,e

)和私鑰n,d

n,dn,

d,最後銷毀p,q

p,qp,

q即可。

我們可以根據之前的方法解密:bd=

aed=

ab^=a^=a

bd=aed

=a可知此方法是正確的。

在攻擊者已知n

nn和e

ee,如果他能求出ϕ(n

)\phi(n)

ϕ(n)

來,那麼即可獲得私鑰(n,

d)

(n,d)

(n,d

)了。又由於ϕ(n

)=(p

−1)(

q−1)

\phi(n)=(p-1)(q-1)

ϕ(n)=(

p−1)

(q−1

),而p,q

p,qp,

q對於攻擊者是不可知的,那麼他只能夠去分解n

nn,那麼只要p,q

p,qp,

q足夠大,耗費的時間就會是不可承受的。

我們看一道題來加深印象。

(ccpc-final 2018)k - mr. panda and kakin

題意:x

xx是[1e5,1e9]​的隨機數,p

pp是小於x

xx的最大素數,q

qq是大於等於x的最小素數,n=p

,c=f

230+3

modn

n=p,c=f ^+3}~~~mod~~n

n=p,c=

f230

+3mo

dn,給n

nn和c

cc求fff。

題解

這個題就是乙個裸的rsa

rsars

a解密。我們在n

\sqrt

n​附近找到p,q

p,qp,

q,求出ϕ(n

)\phi(n)

ϕ(n)

,令e =2

30+

3e=2^

e=230+

3,d=e−

1mod

ϕ(n)

d=e^~~mod~~\phi(n)

d=e−1m

odϕ(

n)。那麼c=f

emod

nc=f^e ~~ mod~~n

c=femo

dn,就是所謂的密文了,f

ff即為cdm

od

nc^~~mod~~n

cdmodn

RSA加密解密

擷取自我的部落格 因為專案需要,最近做乙個rsa加密解密的介面,使用go進行開發,介面使用jsonrpc,go 對rsa加密解密有很好的支援,不過由於受限於底層微控制器,所以上層應用需要做一些稍微的調整。rsa是一種非對稱加密演算法,什麼是非對稱加密演算法呢,那就是公鑰 私鑰可互相進行加密解密 公鑰...

RSA加密解密

rsa加密使用公鑰加密,使用私鑰解密,rsa可以自己隨機生成一組公鑰和私鑰 rsa隨機生成一組公鑰和秘鑰 隨機生成公鑰和秘鑰 沒建立乙個rsacryptoserviceprovider物件,能生成一組隨機的秘鑰,物件相同不管執行多少次方法都是生成的同一組秘鑰 公鑰 私鑰 public static ...

RSA加密解密

rsautil.j a package com.soc.cloud.util import com.soc.cloud.exception.commonerror import com.soc.cloud.param.baseerrresult import com.soc.cloud.util.r...