rsa演算法是應用最廣泛的公鑰密碼演算法。
2023年,rsa演算法由mit的羅納德 · 李維斯特(ron rivest)、阿迪 · 薩莫爾(adi shamir)和倫納德 · 阿德曼(leonard adleman)共同設計,於2023年正式發布,以他們三人的首字母命名。
在這之前所用的對稱加密方式只採用乙個金鑰,知道加密金鑰就可以知道解密金鑰。但是由於雙方需要事先約定加密的規則,就導致沒有辦法安全地交換金鑰,建立安全的傳遞通道。
但是2023年出現的非對稱加密演算法的思想就可以解決金鑰的交換和存放問題。它使用兩個金鑰,乙個用來加密訊息和驗證簽名,叫公鑰,另乙個用來解密,叫私鑰,加解密雙方是不平等的。這種新的構思是由美國計算機科學家whitfield diffie和martin hellman提出的,被稱為diffie-hellman金鑰交換演算法,rsa演算法就是受到它的啟發產生的,是這種構思的具體實現方式,既可以用來加密,解密,也可以用於金鑰交換。
rsa主要使用大整數分解這個數學難題進行設計,巧妙地利用了數論的概念。給了rsa公鑰,首先想到的攻擊就是分解模數,給了的因子攻擊者可以計算得到,從而也可以計算得到解密指數,我們稱這種分解模數的方法為針對rsa的暴力攻擊。雖然分解演算法已經穩步改進,但是在正確使用rsa情況下,當前的技術水平仍遠未對rsa的安全性構成威脅。如今,只有短的 rsa 金鑰才有可能被強力方式解破。
目前,rsa部署在許多商業系統中。web伺服器和瀏覽器使用它來保護web流量,它可以用於保障電子郵件的隱私和真實性,還可以用於保護遠端登入會話,同時它也是電子信用卡支付系統的核心。簡而言之,rsa常用於需要考慮數字資料安全性的應用中。
可以通過以下步驟生成乙個公鑰/私鑰對:
1.隨計選擇兩個不相等的質數p,q
2.計算它們的乘積n=p*q
3.計算尤拉函式φ(n)=(p-1)(q-1),n的二進位制長度作為金鑰的長度,
4.隨機選擇乙個加密金鑰e,這裡1
在實際應用中e和n都是大整數,為了方便理解,下面選取非常小的整數來實現一次金鑰生成過程。
1.隨機選擇兩個質數
p=17 ,q=11
2.計算它們的乘積
n=p*q=17×11=187
3.計算尤拉函式
φ(n)=(p-1)(q-1)=16×10=160
4.選擇e,e是與φ(n)互質的整數,且1e=7
5.決定d
d*e=1 mod φ(n)且d<φ(n)
23×7=160+1
d=23
6.得到公鑰(7,187)
7.得到私鑰(23,187)
生成了公鑰和私鑰,就可以用來加密和解密了。
1.傳送方加密訊息m
拿到對方的公鑰e和n後,計算c = m^e mod n,這裡0≤m2.接收方解密密文c
拿出自己的私鑰d和n,計算m=c^d mod n, 得到原訊息m=11^23 mod 187=88
RSA的簡單認識
rsa是一種非對稱加密演算法,金鑰分為公鑰和私鑰,私鑰加密的內容,只有用公鑰或者私鑰來解密,公鑰加密的內容,只能用私鑰來解密,公鑰可以傳送給別人,私鑰一定要儲存著自己手裡。舉個例子,別人想和我發資訊,所以我先給別人乙個帶鎖的箱子,這個箱子就是公鑰,箱子的鑰匙就是私鑰,私鑰一直在我手裡,這樣,即使在資...
RSA演算法簡單例項
1 選擇一對不同的 足夠大的素數p,q。2 計算n pq。3 計算f n p 1 q 1 同時對p,q嚴加保密,不讓任何人知道。4 找乙個與f n 互質的數e,且1 取p 3 q 11 則 n pq 33 f n p 1 q 1 20,在1到20中取e與20互質,取e 3 也可以取其他 d 3 1 ...
OpenSsl庫 Rsa的簡單使用
環境的配置可以參考 網路上傳輸的資料很容易被抓包,如果不加密,那麼網路數 據很容易被竊取,諸如使用者名稱 密碼這些明感的資訊一旦丟 失,將會造成巨大的損失。2 常用的加密方式 對稱加密 加密方和解密方使用同乙個秘鑰 優點 加密解密過程簡單,高效 缺點 有一 方洩密了,則整個加密就失去了意義 非對稱加...