RSA機密的原理

2021-06-26 04:00:20 字數 2156 閱讀 2005

rsa加密,個人認為是應用極為廣泛,原理也極為簡單地一種加密方式,是非對稱加密的始祖。rsa加密產生於2023年,在這之前,加密的方式為:

加密雙方選擇一種事先約定好的加密方式

一方使用該方式加密

另一方使用該方式解密

所謂的加密方式和金鑰不管,就是一種變換的規則,這種方式的缺點是雙方需要事先約定規則,也就是說規則的傳遞通道是不可靠的。此外如何儲存該規則也成了乙個需要解決的問題。

2023年,兩位美國計算機學家whitfield diffie 和 martin hellman 提出了一種新的構思,可以在不傳遞金鑰的情況下完成解密。這被成為

diffie-hellman金鑰交換演算法,受到這個演算法的啟發,2023年三位數學家 rivest shamir adleman 共同設計了一套新的加密演算法,這個演算法以他們三人的名字首字母命名,即為rsa。

首先要說說2023年出現的可交換金鑰也就是非對稱加密演算法的思想

一方產生一對公鑰和私鑰

將公鑰傳播

用公鑰加密資訊

用私鑰解密資訊

這種思想保證了金鑰的安全性,解決了金鑰存放問題。rsa是這種思想的一種實現方式,採用素數易乘機不易分解的原理

rsa的過程如下:

隨機選擇大素數p q

隨機選擇一整數 e 使得 e與(p-1)(q-1)互素

計算e的模板反素數d

計算 n = pq

銷毀 p q

則(n , e)為公鑰 (n , d) 為私鑰

n的二進位制表示的長度為金鑰的長度

對於加密過程來說輸入資料為一系列的二進位制資料,如漢字可以轉換為相應地編碼,加密的過程為將加密資訊分解為 長度不大於金鑰長度的小塊,對每一小塊分別加密,每一小塊可以表示為乙個很大的整數 a 則 加密資訊為 b=a^e 解密資訊為c=b^d

上面便是rsa演算法的流程表示,具體的實現問題,如如何選取素數,如何求模板反素數,如果選擇隨機數e 先不考慮。上述過程中用到了以下的數學概念,掌握這些數學概念,才能對rsa有更深入的理解。

若兩個數的最大公約是為1則成該兩個數互質

對於任意整數n定義小於等於n的數中與n互質的個數為

n可寫成素數的乘機形式 n = k1^m1 x k2^m2 x k3^m3 ......

若 a 與 n互質,則 a^

若a與n互質,則a的模板反元素b滿足 ab

上面就是rsa所需的數學公式,有了這些公式,可以將rsa演算法表示為另一種數學形式,以方便證明:

對於任意的大素數 p q,若 e 與 (p-1)(q-1)互素,且 ed

c當a 不是 p的倍數 也不是 q的倍數

根據費馬小定理可知:

a^(p-1)

a^(q-1)

又因為 mod 運算是 preserve 乘法的

那麼  a^(k(p-1)(q-1)) x a^((p-1)(q-1))q

呢麼 a x a^(k(p-1)(q-1))

因此 c

當a時p 或者 q 其中的乙個倍數的時候,以a為 p的倍數但不是q的倍數為例

則根據費馬小定理可知:

a^(q-1)

那麼 c

由於a可以被p整除 那麼有 c

那麼 pq | c - a 也即 c

當a即是p的倍數又是q的倍數時:

由上可得出 p | c - a 且 q | c - a 那麼 pq | c - a 也即 c

根據以上數學證明可以得出,當加密的位數小於金鑰位數,也即 n = pq 的 二進位制長度,那麼 經過公鑰加密 之後的資訊 再經過私鑰解密 ,得到的最終資訊和原始資訊是一樣的。從而保證了加密協議rsa的爭取性。

剛開始接觸rsa的時候最想知道的乙個問題是,是否一定要公鑰加密私鑰解密,可否反過來用公鑰解密 私鑰加密。如果不行則說明非對稱演算法是單向的,即只能公鑰接受端向私鑰端傳送資訊,反之則不可以。

經過上面對rsa原理的證明,可知公鑰解密,私鑰加密也是可能的,即仍然可以得到原始資訊。

個人感覺rsa演算法是非對稱加密演算法的始祖,也由於其簡易的原理,可以作為非對稱加密演算法入門的乙個台階。實際應用中的其他非對稱加密演算法,本質上也是要從數學上找到乙個可以通過公鑰加密,私鑰解密的模型。

RSA演算法的原理

rsa演算法的原理 第一步,隨機選擇兩個不相等的質數p和q,如61和53。實際應用中,這兩個質數越大,就越難破解。第二步,計算p和q的乘積n。把61和53相乘,n 61 53 3233。n的長度就是金鑰長度。3233寫成二進位制是110010100001,一共有12位,所以這個金鑰就是12位。實際應...

RSA加密原理

如果你問我,哪一種演算法最重要?我可能會回答 公鑰加密演算法 因為它是計算機通訊安全的基石,保證了加密資料不會被破解。你可以想象一下,信用卡交易被破解的後果。進入正題之前,我先簡單介紹一下,什麼是 公鑰加密演算法 一 一點歷史 1976年以前,所有的加密方法都是同一種模式 1 甲方選擇某一種加密規則...

RSA演算法原理

rsa演算法原理 經過上述準備工作之後,可以得到 根據費爾馬小定義,根據以下公式可以完成解密操作 rsa本身演算法的核心思想還是比較簡單的,加密 解密演算法的區別也只是在乘方取模部分使用的數字有所區別而已 當然,實際運用要比示例 複雜得多,由於rsa演算法的公鑰私鑰的長度 模長度 要到1024位甚至...