場景:銀行工作人員驗明戶主身份後,拿出另一把鑰匙同戶主一起打開保險櫃,這個保險櫃稱爲’雙鑰保險櫃’。
相比於對稱加密算法的單鑰體系,非對稱加密的雙鑰體系更爲安全。在某些極端情況下,費對稱加密算法甚至比對稱加密算法慢1000倍。
公鑰加密的數據,只可用私鑰對其解密;私鑰加密的數據,只可用公鑰對其解密。
使用對稱加密算法爲數據加密/解密,使用公鑰和私鑰爲( 對稱加密算法密鑰 ) 加密/解密。
RSA算法要求待加密數據不得大於53個字節。非對稱加密算法主要用於交換對稱加密算法的祕密密鑰,而非數據交換。
非對稱加密算法的家譜:
基於因子分解難題-RSA,第一個既能用於數據加密,又能用於數字簽名的算法。
基於離散對數難題-DSA
ECC-橢圓曲線加密算法以橢圓曲線理論爲基礎。
DH算法是第一個密鑰協商算法,但僅能用於密鑰分配,不能用於加密/解密消息。
基於DH算法實現的加密通信系統實際上是使用同一個祕密密鑰完成相應的加密/解密對稱加密系統。
DH算法支持的密鑰長度爲64的倍數位,取值範圍在512~1024位之間。
我們熟知的電子郵件加密軟件PGP就採用了RSA算法對數據進行加密/解密和數字簽名處理。
RSA算法公鑰長度遠小於私鑰長度,並遵循”公鑰加密,私鑰解密”和”私鑰加密,公鑰解密”這兩項加密/解密原則。
代碼參見github:
https://github.com/DISSIDIA-986/EncDecAboutJava