RSA 數學原理
提起 RSA
大家一定不陌生,在開發中經常使用,也經常聽同事說道。
前奏
對稱加密
話說很久以前,人們就懂的了加密這個技術。在戰爭時期,間諜就會拿著 密文
和 密匙
來對資訊就行傳遞。 這種簡單的 密文
+ 密匙(key)
就是 對稱加密
加密: 明文 + 密匙
解密: 密文 + 密匙
非對稱加密
由於這種加密方式過於簡單,所以後來引入了數學演算法。 RSA
就是由特殊的數學演算法構成的,也是 非對稱加密演算法
。非對稱加密需要兩個金鑰: 公鑰(public key)
+ 私鑰(private key)
用公鑰加密,私鑰解密
私鑰加密,公鑰解密
相關數學原理
尤拉定理
如果兩個正整數m和n互質,那麼m的φ(n)次方減去1,可以被n整除。

一下是幾種情況
-
定理0 算術函式f如果滿足對於任意兩個互質的正整數m和n,均有f(mn)=f(m)f(n),就稱f為積性函式(或乘性函式)。 如果對於任意兩個正整數m和n,均有f(mn)=f(m)f(n),就稱為完全積性函式。
-
定理1 對於素數p,ϕ(p)=p−1。
-
定理2 ϕ(pn)=pn−pn−1,因為素數冪pn不互質的只有p的倍數,一共有pn/p=pn−1個。
-
定理3 若m、n互質,ϕ(mn)=ϕ(m)ϕ(n),所以尤拉函式是積性函式。 因為mn互質NN,和m互質的數乘上和n互質的數就會和mn互質。
-
定理4 設n=p1a1p2a2...pkak為正整數n的素數冪分解,那麼ϕ(n)=n(1−1/p1)(1−1/p2)...(1−1/pk)。 由定理2,ϕ(pn)=pn−pn−1=pn (1-1/p),又由定理3,ϕ(n)=p1a1p2a2...pkak(1−1/p1)(1−1/p2)...(1−1/pk)=n(1−1/p1)(1−1/p2)...(1−1/pk)
例如: ϕ(8) = ϕ(2^3) = 2^3 - 2^(2-1) = 8 - 4 = 4 ϕ(15) = ϕ(3) * ϕ(5) = 2 * 4 = 8 複製程式碼
費馬小定律
尤拉定理的特殊情況:如果兩個正整數m和n互質,而且n為質數!那麼φ(n)結果就是n-1。

模反元素
如果兩個正整數e和x互質,那麼一定可以找到整數d,使得 ed-1 被x整除。 那麼d就是e對於x的“模反元素”

迪菲赫爾曼密匙交換原理

那麼,通過一系列的數學轉換,最終得出了RSA演算法

公鑰:e 和 n 私鑰:d 和 n 明文:m 密文:c 複製程式碼