個人博客網:https://wushaopei.github.io/ (你想要這里多有)
一、概述
因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法.
非對稱加密算法需要兩個密鑰:公開密鑰和私有密鑰. 公開密鑰與私有密鑰是一對的,這兩個共同組成一個解鑰,才能實現解密。
特點: 高級、雙保險
種類:
- DH(Diffie-Hellman)密鑰交換算法
- RSA——基於因子分解 ,RSA是可以雙向加密的:私鑰加密,公鑰解密;公鑰加密,私鑰解密。
- EIGamal——基於離散對數
- ECC(Elliptical Curve Cryptography)——橢圓曲線加密
說明:如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密. 如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密(某些算法有提供). 非對稱加密算法實現機密信息交換的基本過程是: 甲方生成一對密鑰並將其中的一把作為公用密鑰向其它方公開,得到該公用密鑰的乙方使用該密鑰對信息進行加密后再發送給甲方. 甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密. 另一方面,甲方可以使用乙方提供的公鑰對信息進行加密后再發送給乙方,乙方再用自己的私匙對數據進行解密.
二、密鑰交換算法DH
1、DH算法概述
DH 對稱加密算法:數據安全、密鑰管理復雜、密鑰傳遞過程復雜(存在密鑰泄露問題)
非對稱加密算法的特點:
算法強度復雜、安全性依賴於算法與密鑰.但是由於算法復雜,使得非對稱算法加解密速度沒有對稱算法加解密的速度快.
對稱密鑰體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰.所以保證其安全性就是保證密鑰的安全.
非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣向對方傳輸密鑰了.因此安全性就大了很多.
對稱密鑰與非對稱密鑰比較:
- 算法復雜度:對稱密鑰<非對稱密鑰
- 加解密速度:對稱密鑰>非對稱密鑰
- 安全性:對稱密鑰<非對稱密鑰
2、DH算法實現過程及相關類詳解
【1】DH加密算法 密鑰交換:
初始化發送方密鑰,如:
- KeyPairGenerator
- KeyPair
- PublicKey
初始化接收方密鑰,如:
- KeyFactory
- X509EncodedKeySpec
- DHPublicKey
- DHParameterSpec
- KeyPairGenerator
- PrivateKey
【2】密鑰構建
- KeyAgreement
- SecreKey
- Keyactory
- X509EncodedKeySpec
- PublicKey
static KeyAgreement getInstance(String algorithm)
生成實現指定密鑰一致算法的KeyAgreement對象
【3】加密、解密
- Cipher
3、DH算法實現
執行結果:
雙方密鑰相同
jdk dh eccrypt :Ra+RRytG7xw=
jdk dh decrypt : wen-min
4、DH加密算法的消息傳遞機制:
1.甲方構建密鑰對兒,將公鑰公布給乙方,將私鑰保留;雙方約定數據加密算法;乙方通過甲方公鑰構建密鑰對兒,將公鑰公布給甲方,將私鑰保留。
2.甲方使用私鑰、乙方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰加密數據,發送給乙方加密后的數據;乙方使用私鑰、甲方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰對數據解密。
3.乙方使用私鑰、甲方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰加密數據,發送給甲方加密后的數據;甲方使用私鑰、乙方公鑰、約定數據加密算法構建本地密鑰,然后通過本地密鑰對數據解密。