生成私钥 p q rsa_【安全】理解 RSA 算法
生活随笔
收集整理的這篇文章主要介紹了
生成私钥 p q rsa_【安全】理解 RSA 算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Public-key Crytography簡介
M = D(Pr, C)下圖(摘自維基百科)形象的表述了加密和解密流程:
2、Digital Signature:數(shù)字簽名,發(fā)送方用私鑰加密消息摘要生成簽名,保證消息的完整性和可靠性;
3、Key Exchange:安全的交換密鑰,通常用于交換對稱加密的密鑰。
| Algorithm | Encryption/Decryption | Digital Signature | Key Exchange |
+----------------+-----------------------+-------------------+--------------+
| RSA | Yes | Yes | Yes |
+----------------+-----------------------+-------------------+--------------+
| Deffie-Hellman | No | No | Yes |
+----------------+-----------------------+-------------------+--------------+
| Elliptic Curve | Yes | Yes | Yes |
+----------------+-----------------------+-------------------+--------------+
| DSS | No | Yes | No |
+----------------+-----------------------+-------------------+--------------+
數(shù)論知識
φ(p) = p - 1
對于素數(shù) p, q 有:
φ(p * q) = φ(p) * φ(q) = (p - 1) * (q - 1)
如 φ(21) = 2 * 6 = 12
即:a^(φ(n) + 1) mod n = a mod n
由歐拉定理可知:
1 = a^φ(n) mod n = a * a^(φ(n) - 1) mod n
可求得一個 b = a^(φ(n) - 1),滿足 a * b mod n = 1RSA算法原理
已知 n,求 p、q,并且 p * q = n 很困難
M = C^d mod n
上述公式可表述為:
M = M^(e * d) mod n
根據(jù)歐拉定理可知:
只需 e * d mod φ(n) = 1,即可滿足上式
如果我們選取素數(shù) p, q,那么:
n = p * q 容易計算
φ(n) = (p - 1) * (q - 1) 容易計算
很容易選取一個正整數(shù) e,e 和 φ(n) 互質(zhì)
當(dāng) e 和 φ(n) 互質(zhì)時:
由歐拉定理可很容易算出一個模反元素 d,滿足 e * d mod φ(n) = 1
| Key Generation |
| |
| Select p, q p and q both prime, p != q |
| Calculate n = p * q |
| Calculate φ(n) = (p - 1) * (q - 1) |
| Select integer e e is relatively primte to φ(n) |
| Calculate d (d * e) mod n = 1 |
| Public key PU = {e, n} |
| Private key PR = {d, n} |
+-------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
| Encryption |
| |
| Plaintext M M < n |
| Ciphertext C C = M^e mod n |
+-------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
| Decryption |
| |
| Ciphertext C C |
| Plaintext M M = C^d mod n |
+-------------------------------------------------------------------------------+歡迎關(guān)注交流探討!
Public-key cryptography (公開密鑰加密) 又稱 asymmetric cryptography (非對稱加密),即存在兩把不同的密鑰,分別稱為公鑰 Pu 和私鑰 Pr,公鑰通常用來加密明文 M,只有私鑰才能解密密文 C,如果用 E 和 D 分別表示加密和解密算法,那么有:
C = E(Pu, M)M = D(Pr, C)下圖(摘自維基百科)形象的表述了加密和解密流程:
?????
傳統(tǒng)的對稱加密需雙方共享相同的密鑰,通信安全很大程度依賴雙方是否能妥善的管理密鑰。公開密鑰加密發(fā)明是密碼學(xué)最為重要的里程碑之一,它從數(shù)學(xué)的角度保證了通信安全。公開密鑰加密體系有三大范疇:
1、Encryption/Decryption:即加密與解密,發(fā)送方用接收方的公鑰加密消息;2、Digital Signature:數(shù)字簽名,發(fā)送方用私鑰加密消息摘要生成簽名,保證消息的完整性和可靠性;
3、Key Exchange:安全的交換密鑰,通常用于交換對稱加密的密鑰。
公鑰加密有多種算法,最有名的的是 RSA 和 DH 等,如下:
+----------------+-----------------------+-------------------+--------------+| Algorithm | Encryption/Decryption | Digital Signature | Key Exchange |
+----------------+-----------------------+-------------------+--------------+
| RSA | Yes | Yes | Yes |
+----------------+-----------------------+-------------------+--------------+
| Deffie-Hellman | No | No | Yes |
+----------------+-----------------------+-------------------+--------------+
| Elliptic Curve | Yes | Yes | Yes |
+----------------+-----------------------+-------------------+--------------+
| DSS | No | Yes | No |
+----------------+-----------------------+-------------------+--------------+
數(shù)論知識
理解 RSA 算法前,先介紹一些必要的數(shù)論領(lǐng)域知識。
歐拉函數(shù)
對正整數(shù) n,歐拉函數(shù)?指小于 n 且與 n 互質(zhì)的正整數(shù)數(shù)目,通常用 φ(n) 表示。
對于素數(shù) p,有:φ(p) = p - 1
對于素數(shù) p, q 有:
φ(p * q) = φ(p) * φ(q) = (p - 1) * (q - 1)
如 φ(21) = 2 * 6 = 12
歐拉定理
對于正整數(shù) a 和 n,歐拉定理有:
a^φ(n) mod n = 1即:a^(φ(n) + 1) mod n = a mod n
模反元素
當(dāng) a, n 互質(zhì),一定存在模仿元素 b,使得:
a * b mod n = 1由歐拉定理可知:
1 = a^φ(n) mod n = a * a^(φ(n) - 1) mod n
可求得一個 b = a^(φ(n) - 1),滿足 a * b mod n = 1RSA算法原理
RSA 簡介
RSA 算法于 1977 由 Ron Rivest,Adi Shamir 和 Leonard Adleman 提出,是目前應(yīng)用最為廣泛的非對稱加密算法。極大數(shù)分解難題是 RSA 算法可靠性的根基,即給定兩個大素數(shù) p 和 q,其中 n = p * q,有:已知 p、q,求 n = p * q 很容易已知 n,求 p、q,并且 p * q = n 很困難
RSA 原理
對于明文 M 和 密文 C,且 M < n, C < n,其加密和解密過程如下:
C = M^e mod nM = C^d mod n
上述公式可表述為:
M = M^(e * d) mod n
根據(jù)歐拉定理可知:
只需 e * d mod φ(n) = 1,即可滿足上式
如果我們選取素數(shù) p, q,那么:
n = p * q 容易計算
φ(n) = (p - 1) * (q - 1) 容易計算
很容易選取一個正整數(shù) e,e 和 φ(n) 互質(zhì)
當(dāng) e 和 φ(n) 互質(zhì)時:
由歐拉定理可很容易算出一個模反元素 d,滿足 e * d mod φ(n) = 1
RSA 流程
Cryptography and Network Security 形象的描述了 RSA 流程:
+-------------------------------------------------------------------------------+| Key Generation |
| |
| Select p, q p and q both prime, p != q |
| Calculate n = p * q |
| Calculate φ(n) = (p - 1) * (q - 1) |
| Select integer e e is relatively primte to φ(n) |
| Calculate d (d * e) mod n = 1 |
| Public key PU = {e, n} |
| Private key PR = {d, n} |
+-------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
| Encryption |
| |
| Plaintext M M < n |
| Ciphertext C C = M^e mod n |
+-------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
| Decryption |
| |
| Ciphertext C C |
| Plaintext M M = C^d mod n |
+-------------------------------------------------------------------------------+歡迎關(guān)注交流探討!
總結(jié)
以上是生活随笔為你收集整理的生成私钥 p q rsa_【安全】理解 RSA 算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用通用mapper实现条件查询_使用d
- 下一篇: 判断字符为空_算法题:字符串转换整数 (