rsa私鑰加密
⑴ RSA加密原理
RSA加密是一種非對稱加密。可以在不直接傳遞密鑰的情況下,完成解密。這能夠確保信息的安全性,避免了直接傳遞密鑰所造成的被破解的風險。是由一對密鑰來進行加解密的過程,分別稱為公鑰和私鑰。公鑰加密--私鑰解密,私鑰加密--公鑰解密
在 整數 中, 離散對數 是一種基於 同餘 運算和 原根 的一種 對數 運算。而在實數中對數的定義 log b a 是指對於給定的 a 和 b ,有一個數 x ,使得 b x = a 。相同地在任何群 G 中可為所有整數 k 定義一個冪數為 b K ,而 離散對數 log b a 是指使得 b K = a 的整數 k 。
當3為17的 原根 時,我們會發現一個規律
對 正整數 n,歐拉函數是小於或等於n的正整數中與n 互質 的數的數目(因此φ(1)=1)。有以下幾個特點
服務端根據生成一個隨機數15,根據 3 15 mod 17 計算出6,服務端將6傳遞給客戶端,客戶端生成一個隨機數13,根據 3 13 mod 17 計算出12後,將12再傳回給服務端,客戶端收到服務端傳遞的6後,根據 6 13 mod 17 計算出 10 ,服務端收到客戶端傳遞的12後,根據 12 15 mod 17 計算出 10 ,我們會發現我們通過 迪菲赫爾曼密鑰交換 將 10 進行了加密傳遞
說明:
安全性:
除了 公鑰 用到 n 和 e ,其餘的4個數字是 不公開 的(p1、p2、φ(n)、d)
目前破解RSA得到的方式如下:
缺點
RSA加密 效率不高 ,因為是純粹的數學演算法,大數據不適合RSA加密,所以我們在加密大數據的時候,我們先用 對稱加密 演算法加密大數據得到 KEY ,然後再用 RSA 加密 KEY ,再把大數據和KEY一起進行傳遞
因為Mac系統內置了OpenSSL(開源加密庫),所以我們開源直接在終端進行RSA加密解密
生成RSA私鑰,密鑰名為private.pem,密鑰長度為1024bit
因為在iOS中是無法使用 .pem 文件進行加密和解密的,需要進行下面幾個步驟
生成一個10年期限的crt證書
crt證書格式轉換成der證書
⑵ rsa是公鑰加密還是私鑰加密
公鑰加密,私鑰解密。
⑶ rsa私鑰加密後字元串不可見
原因
解密有長度限制,長度限制為密鑰長度/8;
一般來說密鑰長度為1024,加密長度為 128 ,加密長度為 117 ,如果字元超過這個數量就會報錯。
解決方案
採用分段加密解密,計算出來需要加密數據的長度
以128分割成多個數組進行加密,
以117分割成多個數組進行解密
⑷ 關於RSA中公鑰和私鑰的具體使用情況區分
公鑰和私鑰在一些銀行系統、第三方支付系統SDK中經常會遇到,剛接觸公鑰私鑰的朋友們估計很難區分兩者的區別。
RSA公鑰和私鑰是什麼?
首先來說,RSA是一種非對稱加密演算法,它是由三位數學家(Rivest、Shamir、Adleman)設計出來的。非對稱加密是相對於對稱加密而言的。對稱加密演算法是指加密解密使用的是同一個秘鑰,而非對稱加密是由兩個密鑰(公鑰、私鑰)來進行加密解密的,由此可見非對稱加密安全性更高。
公鑰顧名思義就是公開的密鑰會發放給多個持有人,而私鑰是私有密碼往往只有一個持有人。
公私鑰特性
公鑰和私鑰都可用於加密和解密
公鑰和私鑰都可以用於加解密操作,用公鑰加密的數據只能由對應的私鑰解密,反之亦然。雖說兩者都可用於加密,但是不同場景使用不同的密鑰來加密,規則如下:
1、私鑰用於簽名、公鑰用於驗簽
簽名和加密作用不同,簽名並不是為了保密,而是為了保證這個簽名是由特定的某個人簽名的,而不是被其它人偽造的簽名,所以私鑰的私有性就適合用在簽名用途上。
私鑰簽名後,只能由對應的公鑰解密,公鑰又是公開的(很多人可持有),所以這些人拿著公鑰來解密,解密成功後就能判斷出是持有私鑰的人做的簽名,驗證了身份合法性。
2、公鑰用於加密、私鑰用於解密,這才能起到加密作用
因為公鑰是公開的,很多人可以持有公鑰。若用私鑰加密,那所有持有公鑰的人都可以進行解密,這是不安全的!
若用公鑰加密,那隻能由私鑰解密,而私鑰是私有不公開的,只能由特定的私鑰持有人解密,保證的數據的安全性。
⑸ python的加密方式: rsa加密和解密
RSA加密是一種非對稱加密,通常使用公鑰加密,私鑰解密。
生成文件如下圖:
可以將生成的公鑰、私鑰粘貼復制存儲起來,以便使用:
在使用中, 通常會先對數據進行bas64加密, 再對加密後的內容使用rsa加密, 最後對rsa解密後的內容進行bas64解密.
⑹ RSA 公鑰和私鑰
首先明確一點,公鑰和私鑰是成對出現的。一個負責加密,另一個負責解密。公開的就是公鑰,自己留著的就是私鑰。所以不管加密還是解密密鑰都是可以是公鑰或者私鑰的。
所以如果別人發東西給我,我就需要把加密密鑰給別人,解密密鑰自己藏著,這樣就是公鑰加密,私鑰解密。
如果我想讓別人確認我的身份,我就需要把解密密鑰給別人,加密密鑰自己留著,給自己加密,別人獲得密文後用我的解密密鑰才可以解密。所以這里就是公鑰負責解密,私鑰負責加密。
例如伺服器證書,一個證書中通常包含很多欄位,其中包括:
瀏覽器收到證書時會對簽名頒發機構進行檢查。如果這個機構是個很有權威的公共簽名機構,瀏覽器可能已經知道其公開密鑰了(瀏覽器會預先安裝很多簽名頒發機構的證書),然後用公鑰解密,獲得相關信息,例如獲得證書裡面的Web站點的名稱和主機名,看看與當前瀏覽器的地址欄中的地址是否匹配,不匹配的話,瀏覽器就會給出警告(你可能看到過),提示當前證書是頒給xxx域名的,不是給當前域名的,讓你注意。
⑺ RSA的公鑰、私鑰
RSA的公鑰、私鑰
採用單鑰 密碼系統 的加密方法,同一個 密鑰 可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單 密鑰加密 。
與對稱加密 演算法 不同, 非對稱加密演算法 需要兩個 密鑰 : 公開密鑰 (publickey)和私有密鑰(privatekey)。 公開密鑰 與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的 密鑰 ,所以這種演算法叫作 非對稱加密演算法 。
一、舉個例子
1、發消息
用對方的公鑰給對方發消息
2、發公告
發公告的時候,用自己的私鑰形成簽名!
二、加密和簽名
RSA的公鑰、私鑰是互相對應的,RSA會生成兩個密鑰,你可以把任何一個用於公鑰,然後另一個就是你必須保護好的私鑰了。
RSA的公鑰、私鑰都可以加密,也都可以解密。
其中:
用公鑰加密需要私鑰解密,稱為「加密」。由於私鑰是不公開的,確保了內容的保密,沒有私鑰無法獲得內容;
用私鑰加密需要公鑰解密,稱為「簽名」。由於公鑰是公開的,任何人都可以解密內容,但只能用發布者的公鑰解密,驗證了內容是該發布者發出的。
所以:
如果用於加密解密,那就是用公鑰加密私鑰解密(僅你可讀但別人不可讀,任何人都可寫)
如果用於證書驗證,那就是用私鑰加密公鑰解密(僅你可寫但別人不可寫,任何人都可讀)
三、認證過程
標簽: HTTP