各種加密算法比較
算法選擇:對稱加密AES,非對稱加密: ECC,消息摘要: MD5,數字簽名:DSA
對稱加密算法(加解密密鑰相同)
名稱
密鑰長度
運算速度
安全性
資源消耗
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
輕量級:TEA、RC系列(RC4),Blowfish (不常換密鑰)
速度排名(個人估測,未驗證):IDEA <DES <GASTI28<GOST<AES<RC4<TEA<Blowfish
簡單的加密設計: 用密鑰對原文做 異或,置換,代換,移位
資料大小(MB)
時間(s)
平均速度MB/S
評價
256
10.5
22.5
12
AES(256-bit)
5
51.2
Blowfish
3.7
64
表5-3 單鑰密碼算法性能比較表
實作方式
安 全 性
改進措施
應用場合
40-56bit
密鑰
一般
完全依賴密鑰,易受窮舉搜尋法攻擊
雙重、三重DES,AES
适用于硬體實作
IDEA
128bit密鑰
8輪疊代
較慢
軍事級,可抗內插補點分析和相關分析
加長字長為32bit、密鑰為256bit,采用232 模加、232+1模乘
适用于ASIC設計
GOST
256bit密鑰
32輪疊代
軍事級
加大疊代輪數
S盒可随機秘
密選擇,便于軟體實作
256-448bit
密鑰、16輪疊代
最快
軍事級、可通過改變密鑰長度調整安全性
适合固定密鑰場合,不适合常換密鑰和智能卡
RC4
密鑰長度可變
快DESl0倍
對差分攻擊和線性攻擊具有免疫能力,高度非線性
密鑰長度放寬到64bit
算法簡單,易于程式設計實作
RC5
密鑰長度和疊代輪數均可變
速度可根據
三個參數的
值進行選擇
六輪以上時即可抗線性攻擊、通過調整字長、密鑰長度和疊代輪數可以在安全性和速度上取得折中
引入資料相倚轉
适用于不同字長的微處理器
CASTl28
密鑰長度可變、16輪疊代
可抵抗線性和差分攻擊
增加密鑰長度、形成CAST256
适用于PC機和
UNIX工作站
常見加密算法
1、DES(Data Encryption Standard):對稱算法,資料加密标準,速度較快,适用于加密大量資料的場合;
2、3DES(Triple DES):是基于DES的對稱算法,對一塊資料用三個不同的密鑰進行三次加密,強度更高;
3、RC2和RC4:對稱算法,用變長密鑰對大量資料進行加密,比 DES 快;
4、IDEA(International Data Encryption Algorithm)國際資料加密算法,使用 128 位密鑰提供非常強的安全性;
5、RSA:由 RSA 公司發明,是一個支援變長密鑰的公共密鑰算法,需要加密的檔案塊的長度也是可變的,非對稱算法;
6、DSA(Digital Signature Algorithm):數字簽名算法,是一種标準的 DSS(數字簽名标準),嚴格來說不算加密算法;
7、AES(Advanced Encryption Standard):進階加密标準,對稱算法,是下一代的加密算法标準,速度快,安全級别高,在21世紀AES 标準的一個實作是 Rijndael 算法;
8、BLOWFISH,它使用變長的密鑰,長度可達448位,運作速度很快;
9、MD5:嚴格來說不算加密算法,隻能說是摘要算法;
10、PKCS:The Public-Key Cryptography Standards (PKCS)是由美國RSA資料安全公司及其合作夥伴制定的一組公鑰密碼學标準,其中包括證書申請、證書更新、證書廢棄表釋出、擴充證書内容以及數字簽名、數字信封的格式等方面的一系列相關協定。
11、SSF33,SSF28,SCB2(SM1):國家密碼局的隐蔽不公開的商用算法,在國内民用和商用的,除這些都不容許使用外,其他的都可以使用;
12、ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。
13、TEA(Tiny Encryption Algorithm)簡單高效的加密算法,加密解密速度快,實作簡單。但安全性不如DES,QQ一直用tea加密
為系統而生,為架構而死,為debug奮鬥一輩子; 吃符号的虧,上大小寫的當,最後死在需求上。