RSA演算法公鑰與金鑰的產生

2021-10-12 10:31:22 字數 921 閱讀 3042

假設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)

公鑰與金鑰

b 核心思想 加密和解密採用不同的金鑰 b 一般傳送者和接收者擁有自己的公鑰和金鑰,公鑰是公開的,金鑰不公開。color blue 保密機制 color a向b傳送訊息時,首先用b的公鑰對訊息進行加密,生成密文傳送,b接收到密文後,用自己的金鑰進行解密,進而得到訊息原文。因為b公鑰加密過的訊息只有b...

OpenSSL生成RSA公鑰和金鑰

2.開啟cmd,執行 c openssl win32 bin openssl.exe 進入openssl 3.先生成私鑰,輸入命令 openssl genrsa out private key.pem 2048 按回車鍵,輸出 generating rsa private key,2048 bit ...

RSA公鑰密碼演算法

此演算法的 過程為 開始時選擇兩個素數p和q,計算它們的積n作為加密和解密時的模。接著需要計算n的尤拉函式值 n n 表示小於n且與n互素的正整數的個數。選擇與 n 互素的整數e計算d 圖表圖示如下 模擬實現 include include include int jm int m,int e,in...