算法篇——RSA算法

1.導語:公鑰和私鑰原理

公鑰和私鑰就是俗稱的不對稱加密方式,是從以前的對稱加密(使用用戶名與密碼)方式的提高。我用電子郵件的方式說明一下原理。

使用公鑰與私鑰的目的就是實現安全的電子郵件,必須實現如下目的:

     1. 我發送給你的內容必須加密,在郵件的傳輸過程中不能被別人看到。
     2. 必須保證是我發送的郵件,不是別人冒充我的。

要達到這樣的目標必鬚髮送郵件的兩人都有公鑰和私鑰

公鑰,就是給大家用的,你可以通過電子郵件發佈,可以通過網站讓別人下載,公鑰其實是用來加密/驗章用的。私鑰,就是自己的,必須非常小心保存,最好加上密碼,私鑰是用來解密/簽章,首先就Key的所有權來說,私鑰只有個人擁有。公鑰與私鑰的作用是:用公鑰加密的內容只能用私鑰解密,用私鑰加密的內容只能用公鑰解密。
比如說,我要給你發送一個加密的郵件。首先,我必須擁有你的公鑰,你也必須擁有我的公鑰。
首先,我用你的公鑰給這個郵件加密,這樣就保證這個郵件不被別人看到,而且保證這個郵件在傳送過程中沒有被修改。你收到郵件後,用你的私鑰就可以解密,就能看到內容。其次我用我的私鑰給這個郵件加密,發送到你手裏後,你可以用我的公鑰解密。因爲私鑰只有我手裏有,這樣就保證了這個郵件是我發送的。

當A->B資料時,A會使用B的公鑰加密,這樣才能確保只有B能解開,否則普羅大衆都能解開加密的訊息,就是去了資料的保密性。驗證方面則是使用籤驗章的機制,A傳資料給大家時,會以自己的私鑰做簽章,如此所有收到訊息的人都可以用A的公鑰進行驗章,便可確認訊息是由 A 發出來的了。

2.Tip:

加密算法包括對稱加密和非對稱加密,對稱加密就是加密和解密用一個祕鑰,就像僞裝者等電視劇裏的電報加密一樣,需要一個密碼本,發送方通過它加密,接收方通過它解密,因此密碼本非常重要,一旦泄露就會所有信息被竊取。也就有了特務護送密碼本的橋段,缺點顯而易見。
而非對稱加密有兩個祕鑰,公鑰和私鑰。例如接收方先生成一對公鑰私鑰,公鑰可以直接不加密發送給發送方,任何人都可以拿到。然後發送方用公鑰加密,發送給接收方後,接收方用私鑰可以解密,並且只有私鑰能解密,公鑰不能解密,只能加密。

如果僞裝者裏用非對稱加密的方式,也就不用護送密碼本了,於曼麗也不用死了。。。
但是非對稱加密算法複雜,耗時,以當時的科技手段無法實現。
著名的RSA算法就是非對稱加密的一種,是基於大數難以進行質因數分解設計的。加密等級越高,RSA位數就越長,目前常用1024bits。並且RSA算法除了加密以外還可以實現數字簽名。就是證明A發送的信息確實是A發出的。公鑰和私鑰實際上地位平等,可以互相加密解密。即用公鑰加密的密文可以用私鑰解密,這就是加密過程,反過來用私鑰加密的密文可以用公鑰解密,也就是說大衆可以用公鑰對A發出的密文解密來驗證信息確實是A發出的,這就是數字簽名。

RSA速度很慢,一般只對少量信息進行加密。常用的做法是用RSA給對稱加密密鑰加密,發送給接收方。然後接收方解密知道了對稱加密密鑰,雙方再通過對稱加密方式通訊。

3.RSA算法

 
RSA密鑰產生過程:
···
1.隨機選擇兩個不相等的質數p和q(實際應用中,這兩個質數越大,就越難破解)。
2.計算p和q的乘積n,n = pq。
3. 計算n的歐拉函數φ(n)。
4.隨機選擇一個整數e,條件是1< e < φ(n),且e與φ(n) 互質。
5. 計算e對於φ(n)的模反元素d,使得de≡1 mod φ(n)。
6.產生公鑰(e,n),私鑰(d,n)。

實例描述:

選擇p = 3, q = 11。
n = pq = 33。
φ(n) = (p - 1)(q - 1) = 20。
選擇e = 3, 此時e與φ(n) 互質
(de)modφ(n) =(d*3)mod20=1,求出d=7。
公鑰(3,33),私鑰(7,33)。

例如對明文數字“5”加密,根據加密公式,密文=(5^3)mod(33) = 125 % 33 = 26
把上述密文解密,明文=26^7 % 33 = 8031810176 % 33 = 5。

附上個人基於RSA算法做到一個加解密的小項目:Github地址點擊這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章