1、常用的加密算法分類
常見的加密算法可以分成五類:
對稱加密算法、非對稱加密算法和、Hash 算法(也稱摘要算法)、數(shù)字簽名(Hash&RSA)和數(shù)字證書(Hash&RSA&CA)。
https://blog.csdn.net/liwei16611/article/details/84838554
(1)對稱加密算法
DES(Data Encryption Standard)、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6 和 AES(Advanced Encryption Standard)
(2) 非對稱加密算法
RSA:應用廣泛,解密速度通常很慢,但加密較快
DSA(Digital Signature Algorithm): 解密速度通常很快,但加密較慢,秘鑰量短
ECC
https://cloud.tencent.com/developer/news/254061
(3)Hash 算法
Hash 算法特別的地方在于它是一種單向算法,用戶可以通過 Hash 算法對目標信息生成一段特定長度的唯一的 Hash 值,卻不能通過這個 Hash 值重新獲得目標信息。
過程是:
Hash(明文)--> 固定長度的摘要
因此 Hash 算法常用在不可還原的密碼存儲、信息完整性校驗等。
MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
(4)數(shù)字簽名:將明文進行摘要,然后再通過私鑰進行加密的結(jié)果
MD5&RSA 算法和 SHA1&RSA 算法
(5)數(shù)字證書
A 給 B 發(fā)送消息,A生 成公鑰和私鑰;
A 將公鑰、公鑰持有者、簽名算法和過期時間等信息發(fā)送給 CA(數(shù)字證書認證機構(gòu));
CA 認可信息之后,通過 CA 的私鑰進行簽名,這時候數(shù)字證書就產(chǎn)生了;
接著 A 將明文、明文數(shù)字簽名和數(shù)字證書一起發(fā)送給 B;
B 接受到后,通過 CA 的公鑰進行解密,進行第一次校驗,校驗數(shù)字證書;
驗證成功后,進行第二次檢驗,提取數(shù)字證書中的公鑰,對密文進行解密。
在數(shù)字簽名的基礎上,再發(fā)送一個數(shù)字證書,這樣的話接收方不需要維護一個公鑰庫,通過 CA 驗證后在數(shù)字證書提取,獲得公鑰。
DES 密鑰長度不夠、MD2 速度較慢已逐漸被淘汰
2、加密算法的選擇
1)由于非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數(shù)據(jù)時,建議采用對稱加密算法,提高加解密速度;
2)對稱加密算法不能實現(xiàn)簽名,因此簽名只能非對稱算法;
3)由于對稱加密算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數(shù)據(jù)量很小時,我們可以考慮采用非對稱加密算法。
4)在實際的操作過程中,我們通常采用的方式是:
采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的優(yōu)點,既實現(xiàn)了加密速度快的優(yōu)點,又實現(xiàn)了安全方便管理密鑰的優(yōu)點。
3、如何選擇采用多少位的密鑰
一般來說,密鑰越長,運行的速度就越慢,應該根據(jù)的我們實際需要的安全級別來選擇,一般來說,RSA 建議采用 1024 位的數(shù)字,ECC 建議采用 160 位,AES 采用 128 為即可,對于安全性較高的場合需要使用相應長度的秘鑰。