一直對加解密這一塊兒很暈,這一段時間抽時間好好整理一下,爭取徹底清洗出來
加密算法分類
加密算法的分類主要是按照是否能夠解密,和密鑰是否相同來進行大類性質劃分,不涉及具體的加解密算法
- 單向加密算法(hash算法)
- 對稱加密算法
- 非對稱加密算法
每個類別的加密算法所包含的算法
-
單向加密算法(hash算法)
- Base64:這個具體來說算不上是一個加密,只是一個編碼,但是也是很有用的,經常在加解密中用到
- md5:消息摘要算法,保證消息的完整性
- sha:(Secure Hash Algorithm)主要適用于數字簽名標準(Digital Signature Standard DSS)里面定義的數字簽名算法
- HMAC:(Hash Message Authentication Code)散列消息鑒別碼,主要是利用哈希算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。主要是利用哈希算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出,就像是在md5上加了一個擾動因子
-
對稱加密算法:加解密使用同一個密鑰
- DES:(Data Encryption Standard)中文為數據加密標準:是一種使用密鑰加密的塊算法
- 3DES:(Triple DES),中文名“三重數據加密算法,3 條 56 位的密鑰對數據進行三次加密。3DES(即 Triple DES)是 DES 向 AES 過渡的加密算法
3.CAST:是 通用的 64 位塊加密, 允許最大 128 位的塊大小. - Blowfish:計的Blowfish算法用途廣泛,意在摒棄DES的老化以及其他算法的強制捆綁
- Twofish:對稱塊加密; 使用一種簡單密鑰進行加密和解密,作為代替 DES 算法的候選之一
- IDEA:先于AES出來取代DES,java6沒提供實現。Bouncy Castle提供了實現
- RC6:塊加密算法,是高級加密標準 (AES)的5個候選之一
- Serpent:塊加密算法,是高級加密標準 (AES)的5個候選之一.
- AES:(Advanced Encryption Standard),中文名“高級加密標準,為了來替代原先的 DES 標準
- PEB:(Password Base Encryption),中文名“基于口令加密”,是一種基于密碼的加密算法,其特點是使用口令代替了密鑰,而口令由用戶自己掌管
- Camellia:具有與AES同等級的安全強度及運算量
-
非對稱加密
- RSA
- ECC:橢圓曲線公鑰系統是代替RSA的強有力的競爭者
- Diffie-Hellman:DH秘鑰交換算法,可以讓雙方在完全缺乏對方信息的前提條件下,通過不安全的信道達成一個共享密鑰,這個方法被發明后不久出現了RSA,另一個進行公鑰交換的算法。估計現在應該沒有怎么用了吧。
- El Gamal:ElGamal加密系統是一個基于迪菲-赫爾曼密鑰交換( Diffie-Hellman)的非對稱加密算法
- DSA:(Digital Signature Algorithm)一般用于數字簽名和認證。DSA只是一種算法,和RSA不同之處在于它不能用作加密和解密,也不能進行密鑰交換,只用于簽名,它比RSA要快很多.
下面的章節再分別來介紹加解密的分類,上面說的很多算法在現在看來實際上都是過渡期算法,現在已經基本沒有怎么用了,列在這里只是為了開闊一下眼界