[crypto]-02-非对称加解密RSA原理概念详解
說明:本文使用的數據來自網絡,重復的太多了,也不知道哪篇是原創.
算法原理介紹
| 1 | 找出質數 | P 、Q | - |
| 2 | 計算公共模數 | N = P * Q | - |
| 3 | 歐拉函數 | φ(N) = (P-1)(Q-1) | - |
| 4 | 計算公鑰E | 1 < E < φ(N) | E的取值必須是整數 E 和 φ(N) 必須是互質數 |
| 5 | 計算私鑰D | E * D % φ(N) = 1 | - |
| 6 | 加密 | C = ME mod N | C:密文 M:明文 |
| 7 | 解密 | M =CD mod N | C:密文 M:明文 |
| 1 | Find the prime pairs | P 、Q | - |
| 2 | Calculate the common module | N = P * Q | - |
| 3 | euler function | φ(N) = (P-1)(Q-1) | - |
| 4 | Calculate the public key - E | 1 < E < φ(N) | E must be an integer E and φ(N) are prime numbers |
| 5 | Calculate the private key - D | E * D % φ(N) = 1 | - |
| 6 | encryption | C = ME mod N | C:ciphertext ,M:plaintext |
| 7 | decryption | M =CD mod N | C:ciphertext ,M:plaintext |
算法舉例
- 隨機選擇兩個不相等的質數 : p=61、q=53
- 計算 n = p × q = 61×53 = 3233
- 計算n的歐拉函數 : φ(n) = (p-1)(q-1) = 3120
- 隨機選擇一個整數e,條件是1< e < φ(n),且e與φ(n) 互質, 我們選擇一個 e=17
- 計算e對于φ(n)的模反元素d : d*e%φ(n)=1
支持 n e d都算出來了,n=3233,e=17,d=2753,所以公鑰就是 (3233,17),私鑰就是(3233, 2753)
公鑰能否推導出私鑰,也就是n和e的情況下,推導出d
- (1)ed%φ(n)=1, 推導d, 需要知道e和φ(n)
- (2)φ(n)=(p-1)(q-1)。計算φ(n), 需要知道p和q
- (3)n=pq。只有將n因數分解,才能算出p和q.
私鑰能否推導出公鑰,也就是n和d的情況下,推導出e
- (1)ed%φ(n)=1, 推導e, 需要知道d和φ(n)
- (2)φ(n)=(p-1)(q-1)。計算φ(n), 需要知道p和q
- (3)n=pq。只有將n因數分解,才能算出p和q.
對于3233您可以進行因數分解(3233=61×53),那么對于下面一個這樣很大的數字呢?
12301866845301177551304949
58384962720772853569595334
79219732245215172640050726
36575187452021997864693899
56474942774063845925192557
32630345373154826850791702
61221429134616704292143116
02221240479274737794080665
351419597459856902143413
它等價于:
33478071698956898786044169
84821269081770479498371376
85689124313889828837938780
02287614711652531743087737
814467999489
×
36746043666799590428244633
79962795263227915816434308
76426760322838157396665112
79233373417143396810270092
798736308917
公鑰(e,n)對明文m進行加密 : c = m^e % n
私鑰(d,n)對密文c進行解密 : m = c^d % n
其中e和d是對等的,一樣的地位,可以互換的. 所以,公鑰推出私鑰比較困難,那么私鑰推出公鑰也是比較困難.
另外,在密碼學中,我們一般不說通過公鑰并不是完全不能推算出私鑰, 而是表述為:通過公鑰推算私鑰在計算上是困難的。
那么為什么我們在平時使用時,感覺的是公鑰不能推導私鑰,但私鑰可以推導公鑰呢?
因為在PEM或DER的編碼格式中,公鑰包含了N和E,私鑰包含了N E D P Q等信息,也就是私鑰已經包含了公鑰,故私鑰是能推出公鑰的。
另外在通常使用中,e一般就等于65535,所以無需推導.
相關推薦:
?????????[crypto]-01-對稱加解密AES原理概念詳解
?????????[crypto]-02-非對稱加解密RSA原理概念詳解
?????????[crypto]-03-數字摘要HASH原理概念詳解
?????????[crypto]-04-國產密碼算法(國密算法sm2/sm3/sm4)介紹
?????????[crypto]-05-轉載:PKCS #1 RSA Encryption Version 1.5介紹
?????????[crypto]-05.1-PKCS PKCS#1 PKCS#7 PKCS#11的介紹
?????????[crypto]-06-CA證書介紹和使用方法
?????????[crypto]-30-The Armv8 Cryptographic Extension在linux中的應用
?????????[crypto]-31-crypto engion的學習和總結
?????????[crypto]-50-base64_encode和base64_decode的C語言實現
?????????[crypto]-51-RSA私鑰pem轉換成der, 在將der解析出n e d p q dp dq qp
?????????[crypto]-52-python3中rsa(簽名驗簽加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest測試用
?????????[crypto]-53-openssl命令行的使用(aes/rsa簽名校驗/rsa加密解密/hmac)
?????????[crypto]-90-crypto的一些術語和思考
總結
以上是生活随笔為你收集整理的[crypto]-02-非对称加解密RSA原理概念详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: optee堆Virtualization
- 下一篇: Android init.rc执行顺序