常見加密演算法的分類與比較
常見的加密演算法可以分成三類,對稱加密演算法,非對稱加密演算法和Hash演算法。
對稱加密
指加密和解密使用相同金鑰的加密演算法。對稱加密演算法的優點在於加解密的高速度和使用長金鑰時的難破解性。假設兩個使用者需要使用對稱加密方法加密然後交換資料,則使用者最少需要2個金鑰並交換使用,如果企業內使用者有n個,則整個企業共需要n×(n-1) 個金鑰,金鑰的生成和分發將成為企業資訊部門的惡夢。對稱加密演算法的安全性取決於加密金鑰的儲存情況,但要求企業中每一個持有金鑰的人都保守祕密是不可能的,他們通常會有意無意的把金鑰洩漏出去——如果一個使用者使用的金鑰被入侵者所獲得,入侵者便可以讀取該使用者金鑰加密的所有文件,如果整個企業共用一個加密金鑰,那整個企業文件的保密性便無從談起。
常見的對稱加密演算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES
非對稱加密
指加密和解密使用不同金鑰的加密演算法,也稱為公私鑰加密。假設兩個使用者要加密交換資料,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業中有n個使用者,企業需要生成n對金鑰,並分發n個公鑰。由於公鑰是可以公開的,使用者只要保管好自己的私鑰即可,因此加密金鑰的分發將變得十分簡單。同時,由於每個使用者的私鑰是唯一的,其他使用者除了可以可以通過資訊傳送者的公鑰來驗證資訊的來源是否真實,還可以確保傳送者無法否認曾傳送過該資訊。非對稱加密的缺點是加解密速度要遠遠慢於對稱加密,在某些極端情況下,甚至能比非對稱加密慢上1000倍。
常見的非對稱加密演算法:RSA、ECC(移動裝置用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)
Hash演算法
Hash演算法特別的地方在於它是一種單向演算法,使用者可以通過Hash演算法對目標資訊生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標資訊。因此Hash演算法常用在不可還原的密碼儲存、資訊完整性校驗等。
常見的Hash演算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
加密演算法的效能通常可以按照演算法本身的複雜程度、金鑰長度(金鑰越長越安全)、加解密速度等來衡量。上述的演算法中,除了DES金鑰長度不夠、MD2速度較慢已逐漸被淘汰外,其他演算法仍在目前的加密系統產品中使用。
加密演算法的選擇
前面的章節已經介紹了對稱解密演算法和非對稱加密演算法,有很多人疑惑:那我們在實際使用的過程中究竟該使用哪一種比較好呢?
我們應該根據自己的使用特點來確定,由於非對稱加密演算法的執行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度。
對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。
由於對稱加密演算法的金鑰管理是一個複雜的過程,金鑰的管理直接決定著他的安全性,因此當資料量很小時,我們可以考慮採用非對稱加密演算法。
在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,這樣我們就整合了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。
如果在選定了加密演算法後,那採用多少位的金鑰呢?一般來說,金鑰越長,執行的速度就越慢,應該根據的我們實際需要的安全級別來選擇,一般來說,RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。
對稱加密演算法(加解密金鑰相同)
名稱 |
金鑰長度 |
運算速度 |
安全性 |
資源消耗 |
DES |
56位 |
較快 |
低 |
中 |
3DES |
112位或168位 |
慢 |
中 |
高 |
AES |
128、192、256位 |
快 |
高 |
低 |
非對稱演算法(加密金鑰和解密金鑰不同)
名稱 |
成熟度 |
安全性(取決於金鑰長度) |
運算速度 |
資源消耗 |
RSA |
高 |
高 |
慢 |
高 |
DSA |
高 |
高 |
慢 |
只能用於數字簽名 |
ECC |
低 |
高 |
快 |
低(計算量小,儲存空間佔用小,頻寬要求低) |
雜湊演算法比較
名稱 |
安全性 |
速度 |
SHA-1 |
高 |
慢 |
MD5 |
中 |
快 |
對稱與非對稱演算法比較
名稱 |
金鑰管理 |
安全性 |
速度 |
對稱演算法 |
比較難,不適合網際網路,一般用於內部系統 |
中 |
快好幾個數量級(軟體加解密速度至少快100倍,每秒可以加解密數M位元資料),適合大資料量的加解密處理 |
非對稱演算法 |
金鑰容易管理 |
高 |
慢,適合小資料量加解密或資料簽名 |
演算法選擇(從效能和安全性綜合)
對稱加密: AES(128位),
非對稱加密: ECC(160位)或RSA(1024),
訊息摘要: MD5
數字簽名:DSA
相關文章
- 常見名詞的用法與比較【***】 02天
- 常見加密演算法及常見加密演算法簡述加密演算法
- 機器學習常見演算法效能比較與調參建議機器學習演算法
- JS 物件合併與克隆方法的分類與比較JS物件
- 常見bug分類
- IocPerformance 常見IOC 功能、效能比較ORM
- 常見儲存器分類
- 機器學習常用的分類器比較機器學習
- (新)app逆向四(常見加密演算法)APP加密演算法
- 集合類的比較
- 儲存結構的種類與比較
- 常見的Linux中介軟體有哪些?哪個比較好用?Linux
- 常見的web系統測試管理工具比較Web
- 126 PHP目前比較常見的五大執行模式PHP模式
- Java鎖與非阻塞演算法的效能比較與分析+原子變數類的應用Java演算法變數
- 類和類之間的比較
- 淺談常見的七種加密演算法及實現加密演算法
- PHP常見的加密技術PHP加密
- 文字加密:常見的密碼加密解密方法加密密碼解密
- Linux系統常見的三種裝置分類!Linux
- 常見形式 Web API 的簡單分類總結WebAPI
- Python設計模式有哪些?常見分類!Python設計模式
- 抽象類 & 介面比較抽象
- 【演算法】GPLT - L1 - 比較大小(10分)演算法
- Linux常見問題彙總,比較適合菜鳥哈Linux
- 加密演算法比較:SHA1,SHA256,MD5加密演算法
- iOS常見的幾種加密方法iOS加密
- 效能測試學習(1)-效能測試分類與常見術語
- JS常見加密混淆方式JS加密
- 常見的資料整合有哪些方法?有哪些分類?
- Linux常見的開發命令有哪些?分類介紹!Linux
- 二分類問題常見的評價指標指標
- 元學習:人類與大模型比較建模大模型
- 逆向中常見的加密演算法加密演算法
- volatile與Atomic的比較
- ==與equals比較
- 演算法:比較含退格的字串演算法字串
- 分類演算法-邏輯迴歸與二分類演算法邏輯迴歸
- Javers 比較兩個類的差異