RSA公鑰密碼演算法的原理及實現

2021-05-21 19:16:23 字數 2123 閱讀 6421

rsa公鑰密碼演算法的原理及實現

一、公鑰密碼學概述。

公開金鑰密碼演算法的提出是整個密碼學歷史上最大的而且也許是最唯一真正的變革。從最初一直到現代,幾乎所有密碼系統都建立在基本的替代和置換工具的基礎上。在用了數千年的本質上可以手算完成的演算法之後,常規的密碼學隨著轉輪加密/解密機的發展才出現了乙個重大進步。機電式變碼旋轉軟體使得極其複雜的密碼系統被研製出來。有了計算機後,更加複雜的系統被設計出來。但是不管是轉輪機還是後來的des(資料加密標準),雖然代表了重要的進展,卻仍然依賴於替代和置換這樣的基本工具。

公鑰密碼學則與以前的所有方法都截然不同。一方面公開金鑰演算法基於數學函式而不是替代和置換,更重要的是,公開金鑰密碼學是非對稱的,它用到兩個不同的金鑰,而對稱的常規加密則只使用乙個金鑰。使用兩個金鑰對於保密通訊,金鑰分配和鑑別等領域都有著深遠的影響。

對於公鑰密碼加密有幾個誤解。 誤解

一、公開金鑰加密在防範密碼分析上比常規加密更加安全。

[解釋] 事實上,任何加密方案的安全性都依賴於金鑰的長度和破譯密碼所包含的計算工作量。從抗擊密碼分析的角度講,無論常規還是公開金鑰加密原則上都沒有比對方優越的地方。 誤解

二、公開金鑰加密是乙個使得常規加密已經過時的通用技術。

[解釋] 事實上,由於當前公開金鑰加密在計算上的巨大開銷,在可以預見的未來常規加密並不會被拋棄。目前大家幾乎普遍接受的觀點是公開金鑰密碼演算法只限於金鑰管理和數字簽名等應用。 誤解

三、與使用常規加密時涉及金鑰分配中心的相當繁瑣的握手過程相比,使用公開金鑰加密後金鑰分配就變的非常簡單。

[解釋] 事實上,使用公開金鑰加密仍然需要某種形式的協議,一般這會涉及到乙個中心**,而且整個過程比常規加密中的過程既不簡單也不更有效。

二、什麼是公鑰密碼演算法

目前存在兩種金鑰體制:對稱金鑰體制和非對稱金鑰體制。對稱金鑰體制就是加密和解密用同乙個金鑰。這很好理解,相當於你用你家的鑰匙既可以鎖上你家的門,也可以開啟你家的門。非對稱金鑰體制就是加密和解密不是同乙個金鑰。也就是說乙個金鑰所加密的資料用另乙個金鑰解密。舉個生活中的例子,類似於在機場、火車站、超市以及很多其他公共場所看到的非對稱的存物箱。為了安全儲存你的財物,你把它們放入存物箱並且投入錢幣鎖上它。就如同你的住宅鑰匙鎖上大門一樣,錢幣鎖上了存物箱---在某種意義上,你的錢幣就是金鑰。鎖上門後,你得到另外一把鑰匙---也許是一把真正的鑰匙;也許只是一張寫有號碼的紙條。要開啟存物箱,你就要使用該鑰匙或在鍵盤上輸入號碼。而這個時候,你投入多少錢幣也是打不開存物箱的。

類似地,我們可以產生乙個密碼演算法,其中乙個金鑰用來加密資料,另乙個用來解密。這個模型的另一說法就是公鑰密碼學。要加密和解密資料,兩個金鑰都需要使用,所以其中乙個可以公開而不會危害安全性。這個金鑰就是公鑰。另乙個則稱之為私鑰。我們用公鑰加密資料,用私鑰解密資料。就好象例子中的任何人都知道用錢幣(公鑰)鎖上存物箱,但仍然打不開存物箱。只有擁有鑰匙或寫有號碼的紙條(私鑰)的人才能開啟存物箱。

2023年後,提出了多種公開金鑰演算法,其中許多是不安全的。而那些被視為安全的演算法,有許多卻不實用,要麼金鑰太大,要麼密文遠大於明文。只有少數幾個演算法既安全又實用。其中有三種演算法可以很好的用於加密和數字簽名:rsa、elgamal和rabin。不過它們都很慢。它們加密和解密速度比對稱演算法要慢的多,通常是太慢以致無法用於許多快速資料加密。基於這點考慮,很多時候使用混合密碼系統。使用帶隨機會話金鑰的對稱演算法來加密訊息,使用公開金鑰演算法來加密隨機會話金鑰。

三、rsa公鑰密碼演算法原理

rsa演算法是第乙個比較完善的公開金鑰演算法。它既能用於加密也能用於數字簽名。在已提出的公開金鑰演算法中,rsa是最容易理解和實現的。rsa以它的三個發明者ron rivest、adi shamir和leonard adleman的名字命名。該演算法已經經受住了多年深入的密碼分析,雖然密碼分析者既不能證明也不能否認rsa的安全性,但這恰恰說明了該演算法有一定的可信度。

rsa的安全基於大數分解的難度。其公開金鑰和私人金鑰是一對大素數(100到200個十進位制數或更大)的函式。從乙個公開金鑰和密文中恢復出明文的難度等價於分解兩個大素數之積。

要了解rsa演算法需要從了解一些數論的基本原理開始。

由於無法輸入公式,完整文章及實現請看

RSA公鑰密碼演算法

此演算法的 過程為 開始時選擇兩個素數p和q,計算它們的積n作為加密和解密時的模。接著需要計算n的尤拉函式值 n n 表示小於n且與n互素的正整數的個數。選擇與 n 互素的整數e計算d 圖表圖示如下 模擬實現 include include include int jm int m,int e,in...

公鑰密碼演算法

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 公鑰密碼演算法又稱為非對稱密碼演算法 傳送者用公鑰加密,接收者用自己的私鑰解密 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。...

公鑰密碼學中的RSA演算法分析

公鑰密碼體系又稱為非對稱密碼,即加密和解密演算法使用不同的金鑰 乙個是公鑰pu 乙個是私鑰pr。公鑰密碼學的應用場景有 rsa依賴數論中的一些知識 a b 1 bmod n a a bmod n 其中計算乘法逆元時的歐幾里得演算法在計算上是容易的,通常將a對n取模的逆元寫成 b a bmod n 此...