天天看點

非對稱加密算法-DH算法

一、概述

  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這些對稱加密算法進行資料的傳送了

繼續閱讀