常見非對稱加密算法
常用的非對稱加密算法有:
1、RSA:
RSA 是目前應用最廣泛的數字加密和簽名技術,比如國內的支付寶就是通過RSA算法來進行簽名驗證。它的安全程度取決於秘鑰的長度,
目前主流可選秘鑰長度為 1024位、2048位、4096位等,理論上秘鑰越長越難於破解,目前還沒有公開資料證實有人能夠成功破解1024位的秘鑰,但顯然距離這個節點也並不遙遠,
所以目前業界推薦使用 2048 位或以上的秘鑰,不過目前看 2048 位的秘鑰已經足夠安全了,支付寶的官方文檔上推薦也是2048位,當然更長的秘鑰更安全,但也意味着會產生更大的性能開銷。
2、DSA
既 Digital Signature Algorithm,數字簽名算法,和 RSA 不同的是 DSA 僅能用於數字簽名,不能進行數據加密解密,其安全性和RSA相當,但其性能要比RSA快。
3、ECDSA
Elliptic Curve Digital Signature Algorithm,橢圓曲線簽名算法,是ECC(Elliptic curve cryptography,橢圓曲線密碼學)和 DSA 的結合,
相比於RSA算法,ECC 可以使用更小的秘鑰,更高的效率,提供更高的安全保障,據稱256位的ECC秘鑰的安全性等同於3072位的RSA秘鑰,特別是以BTC為代表的數字貨幣。
常見對稱加密算法
1、DES
已破解,不再安全,基本沒有企業在用了
是對稱加密算法的基石,具有學習價值
密鑰長度56(JDK)、56/64(BC)
2、DESede(三重DES)
早於AES出現來替代DES
計算密鑰時間太長、加密效率不高,所以也基本上不用
密鑰長度112/168(JDK)、128/192(BC)
3、AES
最常用的對稱加密算法
密鑰建立時間短、靈敏性好、內存需求低(不管怎樣,反正就是好)
實際使用中,使用工作模式為CTR(最好用BC去實現),此工作模式需要引入IV參數(16位的字節數組)
密鑰長度128/192/256,其中192與256需要配置無政策限制權限文件(JDK6)
填充模式最常用的兩種PKCS5Padding和PKCS7Padding,其中后者只有BC獨有。
4、IDEA
常用的電子郵件加密算法
工作模式只有ECB
密鑰長度128位
5、PBE
綜合了消息摘要算法和對稱加密算法,最常見的是PBEWithMD5AndDES
工作模式只有CBC(已喪失安全性,不推薦使用),所以PBE也不推薦使用了
常用hash算法
(1)MD5
登錄、注冊、修改密碼等簡單加密操作(加鹽等名詞)
生成數字簽名
(2)SHA-1
SHA-1算法和MD5算法都有MD4算法導出,因此他們倆的特點、缺陷、應用場景基本是相同的。
它倆的區別在於SHA-1算法在長度上是40位十六進制,即160位的二進制,而MD5算法是32位的十六進制,即128位的二進制,所以2的160次是遠遠超過2的128次這個數量級的,
所以SHA-1算法相對來說要比MD5算法更安全一些。
hash算法