一、概述
1、與對稱加密算法的主要差别在于,加密和解密的密鑰不相同,一個公開(公鑰),一個保密(私鑰)。主要解決了對稱加密算法密鑰配置設定管理的問題,提高了算法安全性。
2、非對稱加密算法的加密、解密的效率比較低。在算法設計上,非對稱加密算法對待加密的資料長度有着苛刻的要求。例如rsa算法要求待加密的資料不得大于53個位元組。
3、非對稱加密算法主要用于 交換對稱加密算法的密鑰,而非資料交換
4、java6提供實作了dh和rsa兩種算法。bouncy castle提供了e1gamal算法支援。除了上述三種算法還有一個ecc算法,目前沒有相關的開源元件提供支援
二、模型分析
我們還是以甲乙雙方發送資料為模型進行分析
1、甲方(消息發送方,下同)建構密鑰對(公鑰+私鑰),甲方公布公鑰給乙方(消息接收方,下同)
2、乙方以甲方發送過來的公鑰作為參數構造密鑰對(公鑰+私鑰),将構造出來的公鑰公布給甲方
3、甲方用“甲方的私鑰+乙方的公鑰”構造本地密鑰
4、乙方用“乙方的私鑰+甲方的公鑰”構造本地的密鑰
5、這個時候,甲乙兩方本地新構造出來的密鑰應該一樣。然後就可以使用aes這類對稱加密算法結合密鑰進行資料的安全傳送了。傳送過程參考aes的相關算法
三、代碼分析
四、總結
1、非對稱加密算法主要用來傳遞密鑰的,而且性能較低。但是安全性超強。非對稱加密算法能加密的資料長度也受限
2、用非對稱加密算法算出甲乙雙方本地的密鑰後,可以選擇des/aes/desede這些對稱加密算法進行資料的傳送了