RSA和AES混合使用的原理


利用RSA來加密傳輸AES的密鑰,用AES來加密數據,思路如下:

1、客戶端啟動,發送請求到服務端,服務端用RSA算法生成一對公鑰和私鑰,我們簡稱為pubkey1,prikey1,將公鑰pubkey1返回客戶端。

2、客戶端拿到服務端返回的公鑰pubkey1后,自己用RSA算法生成一對公鑰和私鑰,我們簡稱為pubkey2,prikey2,並將公鑰pubkey2利用服務端傳過來的公鑰pubkey1加密,加密后,傳輸給服務端。

3、此時服務端收到客戶端傳輸的密文,用私鑰prikey1進行解密,因為數據pubkey2是用服務端的公鑰pubkey2加密的,那么,通過解密就可以得到客戶端生成的公鑰pubkey2

4、然后服務端自己再生成 對稱密鑰key,我們取名為aeskey,也就是我們的AES,其實也就是相對於我們配置中的那個16未長度的加密key,生成了這個key以后,我們就用客戶端的公鑰pubkey2進行加密,返回給客戶端。因為被pubkey2加密的數據,只能被客戶端對應的prikey2解密,所以,客戶端拿到密文后,用prikey2進行解密操作,解密完,得到對稱加密AES的密鑰key,最后密鑰key進行數據傳輸加密,至此,整個流程結束。

 

特點分析:

1、單純的使用非對稱加密方式RSA的話,效率會很低,因為非對稱加密解密方式雖然很保險,但是過程復雜,需要時間長。

2、單純使用對稱加密方式AES的話,太死板,因為這種方式使用的密鑰是一個固定的密鑰,也就是不能改,一旦客戶端或者服務端改的話,就必須通知另一方要改,並且改了后,還需要約定一相同的密鑰。使用起來非常不靈活。並且,有一種極端的情況就是,一旦密鑰被人獲取,那么,我們是無法知道的,我們的所發的每一條數據都會被都對方獲取。

but,AES有個很大的優點,那就是加密解密效率很高,而我們傳輸正文數據時,正號需要這種加解密效率高的;所以這種方式適合用於傳輸量大的數據內容。

3、基於以上兩種特點,所以取其優,就是結合使用;用RSA方式傳輸AES的密鑰,然后客戶端和服務端拿到AES的密鑰后,再進行傳輸正式的內容。這樣既利用了RSA的靈活性,可以隨時改動AES的密鑰;又利用了AES的高效性,可以高效傳輸數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM