RSA演算法詳解與舉例

2021-07-02 20:45:00 字數 2342 閱讀 3885

《一》基礎

rsa演算法非常簡單,概述如下:

找兩素數p和q

取n=p*q

取t=(p-1)*(q-1)

取任何乙個數e,要求滿足e

取d*e%t==1

這樣最終得到三個數: n d e

設訊息為數m (m

設c=(m^d)%n就得到了加密後的訊息c

設m=(c^e)%n則 m == m,從而完成對c的解密。

注:**表示次方,上面兩式中的d和e可以互換。

在對稱加密中:

n d兩個數構成公鑰,可以告訴別人;

n e兩個數構成私鑰,e自己保留,不讓任何人知道。

給別人傳送的資訊使用e加密,只要別人能用d解開就證明資訊是由你傳送的,構成了簽名機制。

別人給你傳送資訊時使用d加密,這樣只有擁有e的你能夠對其解密。

rsa的安全性在於對於乙個大數n,沒有有效的方法能夠將其分解

從而在已知n d的情況下無法獲得e;同樣在已知n e的情況下無法

求得d。

《二》實踐

接下來我們來乙個實踐,看看實際的操作:

找兩個素數:

p=47

q=59

這樣

n=p*q=2773

t=(p-1)*(q-1)=2668

取e=63,滿足e

用perl簡單窮舉可以獲得滿主 e*d%t ==1的數d:

c:\temp>perl -e "foreach $i (1..9999)"

847

即d=847

最終我們獲得關鍵的

n=2773

d=847

e=63

取訊息m=244我們看看

加密:

c=m^d%n = 244^847%2773

計算得出

465

即用d對m加密後獲得加密資訊c=465

解密:

我們可以用e來對加密後的c進行解密,還原m:

m=c^e%n=465^63%2773 :

c:\temp>perl -mbigint -e "print 465^63'73"

244

即用e對c解密後獲得m=244 , 該值和原始資訊m相等。

RSA演算法詳解

相濡以沫。到底需要愛淡如水。之前寫過一篇文章ssl協議之資料加密過程,裡面詳細講述了資料加密的過程以及需要的演算法。ssl協議很巧妙的利用對稱加密和非對稱加密兩種演算法來對資料進行加密。這篇文章主要是針對一種最常見的非對稱加密演算法 rsa演算法進行講解。其實也就是對私鑰和公鑰產生的一種方式進行描述...

安全體系(二) RSA演算法詳解

正文 本文主要講述rsa演算法使用的基本數學知識 秘鑰的計算過程以及加密和解密的過程。安全體系 零 加解密演算法 訊息摘要 訊息認證技術 數字簽名與公鑰證書 安全體系 一 des演算法詳解 安全體系 三 sha1演算法詳解 回到頂部 rsa公鑰加密演算法是1977年由羅納德 李維斯特 ron riv...

RSA非對稱加密演算法詳解

rsa加密演算法是最常用的非對稱加密演算法,由羅納德 李維斯特 ron rivest 阿迪 薩莫爾 adi shamir 和倫納德 阿德曼 leonard adleman 於1977年一起提出,rsa就是他們三人姓氏開頭字母拼在一起組成的。非對稱加密演算法的特點就是加密秘鑰和解密秘鑰不同,秘鑰分為公...