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位甚至...