公鑰與私鑰詳解


私鑰算法

私鑰加密算法(對稱加密算法),因為解密密鑰和加密密鑰是相同的,所以這個密鑰是不能公開的,不然的話就相當於是明文了。常見的對稱加密算法有:DES、3DES、AES、DESX、Blowfish、RC4、RC5、RC6

公鑰算法

公鑰加密算法(非對稱加密算法),這種算法加密和解密的密碼不一樣,擁有公鑰和私鑰:

  • 公鑰和私鑰成對出現
  • 公鑰和私鑰是相對的,並沒有限制誰只能是公鑰,只是我們將公開的密鑰叫公鑰,私有的叫私鑰
  • 用公鑰(私鑰)加密的數據只有對應的私鑰(公鑰)可以解密
  • 公鑰(私鑰)只能解對應私鑰(公鑰)加密的數據

常見的非對稱加密算法有:RSA、DSA(數字簽名用)、ECC(移動設備用)、Diffie-Hellman、El Gamal

數據安全

不管是對稱加密還是非對稱加密算法,它的作用其實都是為了保證數據的安全。但是這兩種算法加密之后的數據是不是就是完全安全的呢?

優劣對比

對稱加密:

  • 算法公開,安全性較低
  • 計算量小,加密解密效率高
  • 密鑰管理分發困難,不夠安全

非對稱加密:

  • 加密解密使用不同密鑰,安全性較高
  • 加密解密效率較低,花費時間較長

我們常見的數字證書和加密狗多采用非對稱的加密算法。但是在實際業務中,尤其是數據量較多的情況下,非對稱加密的效率較低,所以常見的是使用對稱加密+非對稱加密的方法。

非對策的算法分析

對稱加密的理解比較簡單,不做什么記錄,簡單的說就是怎么來的怎么回去。這里記錄一下RSA加密算法:

數學基礎

在學習RSA加密算法之間,我們需要理解以下的數學基礎:

  • 質數:在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
  • 合數:大於1的自然數,不是質數。
  • 分解質因數:每一個合數都可以以唯一形式被寫成質數的乘積。
  • 互質:公約數只有1的兩個整數,叫做互質整數。公約數只有1的兩個自然數,叫做互質自然數。
  • 歐拉函數:O(n),小於或等於n的正整數中與n互質的數的數目。
  • 模反元素:如果兩個正整數a和n互質,那么一定可以找到整數b,使得 ab-1 被n整除,或者說ab被n除的余數是1。這時,b就叫做a的“模反元素”。比如a=3,n=11;則b=4。實際上4加減11的整數倍都是3的模反元素 {…,-18,-7,4,15,26,…},即b+kn都是a的模反元素。
  • 同余:兩個整數a,b,若它們除以正整數m所得的余數相等,則稱a, b對於模m同余,如26等於14(mod12)。
  • 歐拉定理:即a的O(n)次方與1在模n下同余;O(n)為歐拉函數。如上n=11,O(n)=10,a的O(n)次方為3的10次方等於=59049=(5368*11 + 1)。
RSA原理

RSA加密算法是一種非對稱加密技術,基本原理是將兩個很大的質數相乘很容易得到乘積,但是該乘積分解質因數卻很困難。

公鑰私鑰的生成
1.選擇兩個大質數p和q,p不等於q,計算出N=p*q
2.根據歐拉函數,任何質數p的互質數目為p-1,另r=O(N)=O(p)O(q)=(p-1)(q-1)
3.選擇一個小於r的整數e,另r和e互質,求e關於r的模反元素為d。
4.(N, e)為公鑰;(N,d)為私鑰。

比如p=11, q=2; 則N=22, r=10。 選擇e=3, d可以為7,17,27(7+10k)
公鑰為(22, 3), 私鑰為(22, 7)。

注意:公鑰私鑰沒有明確指定,可以公鑰為(22, 7), 私鑰為(22, 3)。

數據加密

原始信息為n,加密動作為:

c = n的e次方 (mod N)

如上例,原始數據6,6的3次方為216, (mod 22) 后為18

注:原始數據n必須小於N,當p和q足夠大的時候是沒問題的

數據解密

現在要通過c和私鑰(N,d)將c解密出n。

c的d次方 = n (mod N)

如上例 18的7次方=612220032,(mod 22)后為6; 18的17次方2185911559738696531968,(mod 22)后22也為6

image

參考鏈接:
知乎-Kevin
知乎-花生


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM