RSA、AES加密解密及數(shù)字簽名

參考資料:

①數(shù)字簽名是什么?

②基于HTTP在互聯(lián)網(wǎng)傳輸敏感數(shù)據(jù)的消息摘要、簽名與加密方案

③RSA及AES加解密

④圖解HTTPS

其中比較重要的地方:

①簽名消息(數(shù)字簽名)

RSA除了進(jìn)行非對稱加密意外,實(shí)際應(yīng)用中也可以用來為一個(gè)消息署名,也就是做數(shù)字簽名。假如甲想給乙傳遞一個(gè)署名的消息的話,那么她可以為她的消息計(jì)算一個(gè)散列值(Message digest),然后用她的密鑰(private key)加密這個(gè)散列值并將這個(gè)“署名”加在消息的后面。這個(gè)消息只有用她的公鑰才能被解密。乙獲得這個(gè)消息后可以用甲的公鑰解密這個(gè)散列值,然后將這個(gè)數(shù)據(jù)與他自己為這個(gè)消息計(jì)算的散列值相比較。假如兩者相符的話,那么他就可以知道發(fā)信人持有甲的密鑰,以及這個(gè)消息在傳播路徑上沒有被篡改過。

②為了速度起見,https 連接只在建立連接時(shí),使用服務(wù)器的公鑰加密,這個(gè)階段是為了交換一個(gè)共享密鑰。

③通常公開鑰算法用于相互驗(yàn)證,之后會建立session key(比如128位AES key)。后續(xù)交互的信息都是用session key和對稱加密算法(比如AES)來加解密的,已經(jīng)與證書本身和公鑰密鑰無關(guān)。因?yàn)楣_密鑰算法比對稱密鑰算法開銷大很多。

根據(jù)以上資料,自己又整理了一下,方案如下:

方案一:客戶端的AES密鑰是隨機(jī)生成,RSA加密不用于加密數(shù)據(jù),而是用來加密AES的密鑰??蛻舳伺c服務(wù)端的交互是短連接,每次交互都隨機(jī)生成AES密鑰,數(shù)據(jù)用AES加密,AES密鑰用RSA加密,每次請求同時(shí)傳遞密文和加密后的AES密鑰。

客戶端與服務(wù)器端交互過程

以上僅是個(gè)人的思想,如果有不對的地方還請多指摘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容