博客 / 詳情

返回

RSA AES-對稱加密和非對稱加密

客户端加密過程主要分為以下三個步驟:

1.客户端:隨機產生AES的密鑰
2.客户端:對身份證信息(重要信息)進行AES加密
3.客户端:通過使用RSA對AES密鑰進行公鑰加密
4.服務端:對加密後的AES密鑰進行RSA私鑰解密,拿到密鑰原文;
5.服務端:對加密後的重要信息進行AES解密,拿到原始內容。
之所以這麼麻煩,因為:

AES對稱加密、解密的速度要比RSA快很多,
但是,安全性卻不如RAS

1,客户端傳輸重要信息給服務端,服務端返回的信息不需加密的情況

客户端傳輸重要信息給服務端,服務端返回的信息不需加密,
例如綁定銀行卡的時候,需要傳遞用户的銀行卡號,手機號等重要信息,
客户端這邊就需要對這些重要信息進行加密,使用RSA公鑰加密,服務端使用RSA解密,然後返回一些普通信息,
比如狀態碼code,提示信息msg,提示操作是成功還是失敗。
這種場景下,僅僅使用RSA加密是可以的。

2,客户端傳輸重要信息給服務端,服務端返回的信息需加密的情況

客户端傳輸重要信息給服務端,服務端返回的信息需加密,
例如客户端登錄的時候,傳遞用户名和密碼等資料,需要進行加密,
服務端驗證登錄信息後,返回令牌token需要進行加密,
客户端解密後保存。此時就需要結合這兩種算法了。

一般情況下,RSA時需要和AES結合使用的:
客户端使用RSA + AES對重要信息進行加密

RSA

非對稱加密算法

雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去。

私鑰只能由一方安全保管,不能外泄,而公鑰則可以發給任何請求它的人。非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰。比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對消息加密,那麼只有私鑰的持有人–銀行才能對你的消息解密。與對稱加密不同的是,銀行不需要將私鑰通過網絡發送出去,因此安全性大大提高。

非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。
公開密鑰與私有密鑰是一對
如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密
如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。
因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

簡單的説是“公鑰加密,私鑰解密;私鑰加密,公鑰解密”。


AES

對稱加密算法

意為高級加密標準(英文:Advanced Encryption Standard,縮寫:AES)

最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key),這種方法在密碼學中叫做對稱加密算法。對稱加密有很多種算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。

對稱加密通常使用的是相對較小的密鑰,一般小於256 bit。因為密鑰越大,加密越強,但加密與解密的過程越慢。如果你只用1 bit來做這個密鑰,那黑客們可以先試着用0來解密,不行的話就再用1解;但如果你的密鑰有1 MB大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。密鑰的大小既要照顧到安全性,也要照顧到效率,是一個trade-off。

對稱加密的一大缺點是密鑰的管理與分配,換句話説,如何把密鑰發送到需要解密你的消息的人的手裏是一個問題。在發送密鑰的過程中,密鑰有很大的風險會被黑客們攔截。現實中通常的做法是將對稱加密的密鑰進行非對稱加密,然後傳送給需要它的人。

user avatar bell_lemon 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.