當前位置:成語大全網 - 漢語詞典 - 密碼學:RSA (1)

密碼學:RSA (1)

密碼學是指研究信息加密和破解密碼的技術科學。密碼學的起源可以追溯到2000年前。相傳古羅馬名將朱利葉斯·凱撒為了防止敵人截獲信息,用密碼發送信息。凱撒的做法很簡單,就是建立20多個羅馬字母的對應表。這樣,如果不知道密碼本,即使截取壹條信息也看不懂。

從凱撒大帝時代到70年代,密碼學的發展非常緩慢,因為設計者基本都是靠經驗。沒有應用數學原理。今天的密碼學是以數學為基礎的。

20世紀70年代產生的壹種加密算法。它的加密方法比較特殊,需要兩個密鑰:publickey和privatekey。公鑰加密,私鑰解密;私鑰加密,公鑰解密。這個加密算法就是偉大的RSA。

要實現加密和解密,要用壹種易加密難破解的數學運算。此時使用Mod操作(時鐘算法)。

如果以質數為模數(17),找壹個比這個模數小3的數,那麽有如下算法:

3的x次方範數是17,結果總是在1和16之間,其中3是17的原根。很難推導出原始值,因為它需要壹個實驗,並且不唯壹知道結果。當這裏的模量變大時,很難逆轉裂縫。這就是離散對數問題。

任何給定的正整數n,in

計算這個值的方式叫做歐拉函數,用φ(n)表示。

根據以上兩點,如果n是兩個素數P1和P2的乘積,那麽:

φ(N)=φ(p 1)*φ(P2)=(p 1-1)*(P2-1)

如果兩個正整數m和n互質,那麽m的φ(n)次方減1可以被n整除..

歐拉定理的特例:如果兩個正整數M和N互質,N是質數!那麽φ(n)的結果就是n-1。

歐拉定律m φ(n)% n ≡ 1 (m和n互質)

由於1 k% n ≡ 1,我們可以得到:

因為1*m ≡ m,我們可以得到:

驗證:

註意:在轉換過程中,m必須小於n才有效。大於這個數相當於多跑了壹圈。

如果兩個正整數e和x互質,那麽必須找到整數d,這樣ed-1才能被x整除。

那麽:d是e到x的模逆元。

可以得到下面的公式:

假設商是k,可以得到下面的公式:

當φ(n)為x時,則:

驗證:m: 4,n: 15,φ(n): 8。

假設e: 3,d?

3d -1 = 8k表示d = (8k+1)/3 k = 4表示D = 11,k=7表示d = 19。

整個推導過程如下:

解決密鑰傳輸的保密性問題

原則:

M e*d% n ≡ m被Diffie Herman密鑰交換拆分。

Total * * *生成6個數:p1,p2,n,φ(n),e,d。

確認

M :3、12,N: 3 * 5 = 15,φ(n):8,

假設E: 3,D: 11,通過模逆元的計算可以得到19。

除了公鑰用n和e,其他四個數都不是公開的。

目前破解RSA得到D的途徑如下:

1,求私鑰d .因為e*d = φ(n)*k+1。知道e和φ(n);

2,e已知,但要得到φ(n),必須知道p1和p2。

3.因為n = p1*p2。只有分解n因子才能算出來。

這時候就很難破解了。

因為RSA的m小於n,所以每次加密的數據都很小,需要分段加密,效率很低。用於加密大數據對稱加密的密鑰。

由於Mac系統內置了OpenSSL(開源加密庫),我們可以直接在終端上使用命令進行RSA操作。OpenSSL中RSA算法常用的主要指令有三條:

生成密鑰長度為1024bit的RSA私鑰。

e:65337(公共指數)

用公鑰加密數據,用私鑰解密數據。

加密:

解密:

完整命令:

Enc.txt文件128字節,dec.txt文件20字節。

用公鑰加密數據,用私鑰解密數據。

這時候就變成了簽名和驗證。

簽名:

驗證:

整個文件目錄如下: