https://www.cnblogs.com/dreamOfChen/p/5098057.html
阿新 • • 發佈:2018-11-13
注意:本節內容主要參考自《Java加密與解密的藝術(第2版)》第8章“高等加密演算法--非對稱加密演算法”
11.1、非對稱加密演算法
特點:
- 傳送方和接收方均有一個金鑰對(公鑰+私鑰),其中公鑰傳播,私鑰自己儲存,不需要傳播
- 私鑰不需要傳播的特性解決了對稱加密演算法中金鑰傳播的困難(這個困難一般通過線下傳遞可以解決)
- 加密安全性極高,只用於一些電子商務網站,加解密速度遠低於對稱加密
- 一般情況下,為了解決非對稱加密演算法加解密速度低的問題,採用非對稱加密(使用公鑰+私鑰對對稱加密的金鑰進行加解密)+對稱加密(加解密資料)相結合的方式。
常見演算法:
- DH(非對稱加密的基石)
- RSA(非對稱加密的經典,除了可用於非對稱加密,也可用於數字簽名,RSA--155(512位金鑰)已被破解)
- ElGamal
11.2、DH(僅能用於金鑰分配,不能加解密資料)
實現方式:
- JDK(金鑰長度:512~1024中的64的整數倍)
幾個概念:
- 金鑰對:公鑰+私鑰
- 本地金鑰:對稱加密的金鑰
整個流程:
1)甲乙雙方初始化各自的金鑰對
甲方構建出金鑰對keyPair1-->乙方使用甲方的金鑰對中的公鑰publicKey1構建出自己的金鑰對keyPair2
2)甲乙雙方構建各自的本地金鑰
甲方使用自己的私鑰privateKey1+乙方的公鑰publicKey2構建出自己的本地金鑰key1
乙方使用自己的私鑰privateKey2+甲方的公鑰publicKey1構建出自己的本地金鑰key2
最後會發現key1==key2,這兩個本地金鑰將會是接下來對對稱加密所使用的金鑰
3)傳送方(甲方或乙方均可)使用本地金鑰+對稱加密演算法對待加密資料進行加密,傳遞給接收方
4)接收方使用本地金鑰+對稱加密演算法對待解密資料進行解密