RSA 加密演算法原理學習筆記 1

2022-06-29 11:48:13 字數 2886 閱讀 9967

rsa演算法原理(一) - 阮一峰的網路日誌

rsa 加密演算法是一種非對稱加密演算法,加密和解密的金鑰是不同的。

(1)乙方生成兩把金鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。

(2)甲方獲取乙方的公鑰,然後用它對資訊加密

(3)乙方得到加密後的資訊,用私鑰解密

金鑰越長,它就越難破解。根據已經披露的文獻,目前被破解的最長 rsa 金鑰是 768 個二進位制位。也就是說,長度超過 768 位的金鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024 位的 rsa 金鑰基本安全,2048 位的金鑰極其安全。

給定乙個正整數,如果兩個整數 a 和 b 滿足 a - b 能夠被 m 整除,即 (a-b)/m 得到乙個整數,那麼就稱整數 a 與 b 對模 m 同餘,記作 \(a \equiv b \pmod m\)。對模 m 同余是整數的乙個等價關係。

兩個正整數只有 1 這個公因子,那麼這兩個數有互質關係。

1 和任意乙個自然數是都是互質關係,比如 1 和 99。

任意兩個質數構成互質關係,比如 13 和 61。

乙個數是質數另乙個數只要不是前者的倍數或者小於前者,兩者就構成互質關係,比如 3 和 10、17 和 4。

p 是大於 1 的整數,則 p 和 p-1 構成互質關係,比如 57 和 56。

p 是大於 1 的奇數,則 p 和 p-2 構成互質關係,比如 17 和 15。

計算小於等於 n的所有正整數中,與 n 有互質關係的所有正整數個數。這種演算法稱為尤拉函式,以φ(n)表示。

n = 1φ(1) = 1

n為質數:φ(n) = n-1。因為小於n的數都與n互質。

n為某質數某次方,n = p^kp為質數,k為大於等於1的整數):

那麼,$$\phi(n) = \phi(p^k) = p^k - p^$$

n可以分解成兩個互質的整數之積,n = p × q

\[\phi(n) = \phi(pq) = \phi(p)\phi(q)

\]最終通用推算:

算術基本定理:任意乙個大於 1 的正整數,都可以寫成一系列質數的積:\(n = p^_1p^_2 \ldots p^_r\)(它將把對自然數的研究轉化為對其最基本的元素——質數/素數的研究)。

因此根據第 4 種情況的結論(可拆),得到任意乙個大於 1 的正整數的尤拉函式:\(\phi(n) = \phi(p^_1)\phi(p^_2)\ldots\phi(p^_r)\);

再根據第 3 種情況的結論(原數是質數多次方),可改寫為:\(\phi(n) = p^_1p^_2...p^_r(1-\frac1p_1)(1-\frac1p_2)\ldots(1-\frac1p_r)\);

也就是:

\[\phi(n) = n(1-\frac1p_1)(1-\frac1p_2)\ldots(1-\frac1p_r)

\]這便是尤拉函式的通用計算公式。

尤拉函式的應用在於尤拉定理。

尤拉定理:如果兩個正整數 a 和 n 互質,則 n 的尤拉函式φ(n)可以讓下面的等式成立:

\[a^ \equiv 1 \pmod n

\]

比如 4 和 5:

4 的尤拉函式結果為 2,滿足 \(5^2 \div 4 = 6 \cdots 1\)。也就是 \((5^2 -1 )\) 可以被 4 整除。

尤拉定理有乙個特殊的情況,假設正整數 a 與質數 p為互質關係,因為φ(p) = p - 1,那麼:

\[a^ \equiv 1 \pmod p

\]這就是費馬小定理,是尤拉定理中乙個數為質數的特例。

如果兩個正整數 a 和 n 互質,那麼一定可以找到整數 b ,使得 ab-1 被 n 整除,或者說 ab 被 n 除的餘數是 1,那麼:

\[ab \equiv 1 \pmod n

\]

稱 b 為 a 的模反元素(稱模反元素時,還需要另乙個數 n 作為環境)。

比如,4 和 7 互質,利用尤拉定理求:\(φ(4) = φ(2^2) = 2^2 - 2^1 = 2\),所以 \(7^2 = 1 \pmod 4\),因為不能再取 b為 7,所以就換另一邊計算。

\(φ(7) = 7 - 1 = 6\),所以 \(4^6 = 1 \pmod 7\),得到 \(4 \times 4^5 = 1 \pmod 7\),可以獲得 45 是 4 的乙個模反元素。

顯然模反元素不止乙個。45加減任意個 7 均是 4 的模反元素,既滿足 b + kn 即可(b 是45,n 是 7)。

RSA加密演算法 原理

mod函式是乙個求餘函式,其格式為 mod nexp1,nexp2 即是兩個數值表示式作除法運算後的餘數。特別注意 在excel中,mod函式是用於返回兩數相除的餘數,返回結果的符號與被除數 divisor 的符號相同。一 什麼是 素數 素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示...

RSA加密演算法(1)

rsa加密演算法是一種非對稱加密演算法。極大整數做因數分解的難度 1 乙個正整數寫成幾個約數的乘積 2 完整的因子列表可以根據約數分解推導出,將冪從零不斷增加直到等於這個數。如 45 的兩大約數 為 3 和 5。3 給出兩個大約數,很容易就能將它們兩個相乘。但是,給出它們的乘積,找出它們的因子就顯得...

RSA加密演算法

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