RSA演算法原理剖析

2021-10-05 12:22:02 字數 2089 閱讀 5128

開發過程中, 常常會涉及到加密演算法的應用, 因不知其所以然, 導致忘性依舊, 整理成冊, 溫故而知新

1.找兩個質數 p q : ( 除了1和本身之外, 沒有別的因數 )

2.計算公共模數: n = p * q ( 因為p和q都是質數, 所以n的產生只能通過p * q , 不存在其他的方式 )

3.計算尤拉函式: φ(n) = (p-1)(q-1)

解釋一下尤拉函式: 如果n為正整數, 那麼φ(n)代表與n互質 ( 公約數只有1的兩個數稱之互質 ) 的數字的個數

exp: φ(8) = 4

與8互質的數有: 1 3 5 7

4.計算公鑰 e : 1 < e < φ(n) && e 與 φ(n) 必須互質

exp: 1 < e < φ(8)

則 e可以取 3, 因為φ(n)=4

5.計算私鑰 d : e * d % φ(n) = 1

exp: 3 * d % 4 = 1

d = 3 | 7 | 11 | 15 | .... | d(3) + 4n

6.重點: 因為 e 與 φ(n) 互質, 且 e * d % φ(n) = 1, 可以反推 d 和 φ(n) 也互質

因為 e 與 d 互質, 且 n 為質數, 可以得到下面的公式

即: 加密可以用:

c = m^e mod n 注釋: c:密文 m:明文

即:解密可以用:

m =c^d mod n 注釋: c:密文 m:明文

即: 公鑰為: (e, n) 私鑰為: (d, n)

(注意是 mod n 而不是 mod φ(n))

7.重點: 如果想通過公鑰得到私鑰: 則必須知道: φ(n)

而φ(n) = (p-1)(q-1)

則必須知道p和q

而p和q必須通過分解n來得到

目前已知最大可分解的公約數大概7百位

所以破解rsa加密演算法非常困難

rsa模值一般都會取1024bits以上 2048bits以下

換算成10進製是 2^1023 + 1 ~ 2^2047 + 1

1、找出質數 p 、q

p = 3

q = 11

2、計算公共模數
n = p * q = 3 * 11 = 33

n = 33

3、 尤拉函式
φ(n) = (p-1)(q-1) = 2 * 10 = 20

φ(n) = 20

4、計算公鑰e
1 < e < φ(n)

1 5、計算私鑰de * d % φ(n) = 1

3 * d % 20 = 1

根據上面可計算出 d = 7 | 27 | d(7) + 20n

6、公鑰加密
為了演示,就加密乙個比較小的數字 m = 2

公式:c = m^e mod n

其中: m = 2; e = 3; n = 33

代入公式: c = 2^3 % 33 = 8

明文 「2」 經過 rsa 加密後變成了密文 「8」

7、私鑰解密
m =cd mod n

其中: c = 8; d = 7; n = 33

代入公式: m = 8^7 % 33 = 2 8 * 8 * 8 * 8 * 8 * 8 * 8=2097152

8 * 8 * 8 * 8 * 8 * 8 * 8 % 33 = 2

密文 「8」 經過 rsa 解密後變成了明文 2

側面解讀

公鑰私鑰的生成和一開始選的質數沒關係, 只與φ(n)有關係, 因為秘鑰對裡, 儲存的是 n, n = p*q, 但是 pq 分解不出來, 所以就不能得到φ(n)

RSA演算法原理

rsa演算法原理 經過上述準備工作之後,可以得到 根據費爾馬小定義,根據以下公式可以完成解密操作 rsa本身演算法的核心思想還是比較簡單的,加密 解密演算法的區別也只是在乘方取模部分使用的數字有所區別而已 當然,實際運用要比示例 複雜得多,由於rsa演算法的公鑰私鑰的長度 模長度 要到1024位甚至...

RSA演算法原理

rsa演算法是最廣泛使用的非對稱加密演算法。金鑰長度為1024位,特殊情況下比如國家重要的一些東西採用2048位。在理解rsa演算法之前先來看4個數學概念 互質關係 兩個整數,除了1之外沒有其它公因子,就稱這兩個整數具有互質關係。尤拉函式 用 n 表示。例如在1 8中,與8形成互質關係的有4個,那麼...

RSA演算法原理

一 rsa演算法數論 將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。二 rsa演算法涉及三個引數,n e1 e2。三 公私鑰生成過程 1 首先,需要兩個大質數,p和q,並且p不等於q。2 n是兩個大質數p q的積。n的二進位制表示時所占用的位數就是...