密碼學之公鑰密碼算法


密碼學之公鑰密碼算法

公鑰密碼算法簡介

​ 公鑰密碼算法在加密和解密中使用一對不同的密鑰,其中一個密鑰公開,稱為公鑰,寧一個密鑰保密,稱為私鑰,且由公鑰求解私鑰計算是不可行的的。顧名思義,公鑰是公開的。

 

RSA公鑰密碼體制

簡介

​ 是迄今為止理論上最為成熟完善的公鑰密碼體制。也是目前廣泛應用的公鑰密碼體制。RSA的基礎是數論的歐拉定理,他的安全性依賴於大整數因子分解的困難

數學知識補充

互質

如兩個正整數,除了1之外就沒有其他公因子,就稱這兩個正整數是互質的。而且並沒有要求這兩個正整數都是質數,如15和4就是互質的。

歐拉函數

求小於x並且和x互質的數的個數。其通式為φ(x) = x(1-1/p1)(1-1/p2)...(1-1/pₙ),其中p1,p2..pn為x的所有質因數,x為不為零的整數。

比如x=16時φ(16) = 16 * (1-1/2) = 8

我們也可以列舉與16互質,且小於16的數: 1,3,5,7,9,11,13,15,個數為8個

而在RSA求密鑰對中就需要用到歐拉函數的一個性質,即如果p是素數的話,φ(p)=p-1

模反元素

如果兩個正整數a和b互質,那么一定可以找到整數n,使得ab-1被n整除,或者說ab被n整除的余數是1。一般在已知其中一個整數假如是a和整數n的情況下,求另一個整數b的運算就是模反運算。

其解法包括朴素算法,輾轉相除法,歐幾里得算法。

RSA生成公鑰私鑰對

  1. 選取兩個不同的大素數p和q

  2. 計算n=p*q,並計算n的歐拉函數φ(n)=(p-1)(q-1),也就是求小於n且與n互質的數。

  3. 隨機選取正式e<Z,1<e<φ(n)作為公鑰之一,且要滿足e與φ(n)互質。

  4. 采用模反算法計算私鑰d,使ed=1(modφ(n)),也就是d=e⁻¹(modφ(n)),也就是(ed-1)能被φ(n)整除

  5. 得到公鑰(e,n)和私鑰d

加密過程

RSA的加密函數很簡單,對於明文m,公鑰(e,n),E(m)=mᵉ(modn)

​解密過程

RSA的解密過程也很簡單移動,對於密文c,私鑰d,D(c)=cᵈ(modn)

使用流程

 


免責聲明!

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



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