RSA加密演算法

2021-08-09 18:22:56 字數 1120 閱讀 8325

公鑰與金鑰的產生

假設alice想要通過乙個不可靠的**接收bob的一條私人訊息。她可以用以下的方式來產生乙個公鑰和乙個私鑰:

隨意選擇兩個大的質數p和q,p不等於q,計算n=pq。

根據尤拉函式,求得r = (p-1)(q-1)

選擇乙個小於 r 的整數 e,求得 e 關於模 r 的模反元素,命名為d。(模反元素存在,當且僅當e與r互質)

將 p 和 q 的記錄銷毀。

(n,e)是公鑰,(n,d)是私鑰。alice將她的公鑰(n,e)傳給bob,而將她的私鑰(n,d)藏起來。

加密訊息

假設bob想給alice送乙個訊息m,他知道alice產生的n和e。他使用起先與alice約好的格式將m轉換為乙個小於n的整數n,比如他可以將每乙個字轉換為這個字的unicode碼,然後將這些數字連在一起組成乙個數字。假如他的資訊非常長的話,他可以將這個資訊分為幾段,然後將每一段轉換為n。用下面這個公式他可以將n加密為c:

ne ≡ c (mod n)

計算c並不複雜。bob算出c後就可以將它傳遞給alice。

解密訊息

alice得到bob的訊息c後就可以利用她的金鑰d來解碼。她可以用以下這個公式來將c轉換為n:

cd ≡ n (mod n)

得到n後,她可以將原來的資訊m重新復原。

解碼的原理是:

cd ≡ n e·d(mod n)

以及ed ≡ 1 (mod p-1)和ed ≡ 1 (mod q-1)。由費馬小定理可證明(因為p和q是質數)

n e·d ≡ n (mod p)   和  n e·d ≡ n (mod q)

這說明(因為p和q是不同的質數,所以p和q互質)

n e·d ≡ n (mod pq)

簽名訊息

rsa也可以用來為乙個訊息署名。假如甲想給乙傳遞乙個署名的訊息的話,那麼她可以為她的訊息計算乙個雜湊值(message digest),然後用她的金鑰(private key)加密這個雜湊值並將這個「署名」加在訊息的後面。這個訊息只有用她的公鑰才能被解密。乙獲得這個訊息後可以用甲的公鑰解密這個雜湊值,然後將這個資料與他自己為這個訊息計算的雜湊值相比較。假如兩者相符的話,那麼他就可以知道發信人持有甲的金鑰,以及這個訊息在傳播路徑上沒有被篡改過。

RSA加密演算法

素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...

RSA加密演算法

演算法的描述 1.選取兩個素數p,q 2.計算n p q,fn p 1 q 1 3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。4.計算出乙個整數d,使得d e除fn的餘數為1。d用於對密文進行解密,還原出明文。5.假設明文為m,密文為c。如果需要對原文進行加密,則進行如...

RSA加密演算法

一 rsa是公鑰加密演算法之一,該演算法的數學基礎是 1 初等數論的euler定理,即 若整數a與整數n互素,則a n 1 mod n 其中,n 為尤拉函式。2 大整數分解很困難,即給定乙個大整數n,將其分解為n p q,兩個素數乘積十分困難。二 rsa基本原理 1 金鑰的生成。選擇大素數p,q,計...