java 常用的加密算法及分类

1.加密算法分类:

    按照是否需要key加密解密分类:

               不需要key的加密:Base64加密,MD5,SHA1,SHA256

               需要key的加密:对称加密算法(AES,DES,3DES) 非对称加密算法(RSA)数字签名算法(RSA+MD5) HAMC

  按照加密是否可逆分类:

               单向加密算法(不可解密):MD5,SHA1,SHA256,HMAC

               非单向加密算法(可解密):Base64,对称加密算法(AES,DES,3DES) 非对称加密算法(RSA),数字签名算法;

 

2.加密算法介绍:

  Base64加密:准确的来说,更是一种编码方式,可以有效的防止明文传输,并且可以对二进制文件(图片等非文本文件)进行编码。

MD5 SHA1 SHA256

三种典型的单向加密算法,都不需要key。加密长度固定

MD5 128位(16字节)

SHA1 160位

SHA256  256位

安全性方面,显然SHA256(又称SHA2)的安全性最高,但是耗时要比其他两种多很多。MD5相对较容易碰撞,因此,SHA1应该是这三种中性能最好的一款加密算法。

通常我们不直接使用上述MD5加密。通常将MD5产生的字节数组交给Base64再加密一把,得到相应的字符串。

对称加密算法:

AES与DES的比较:

优点:“DES”:运算速度快,资源消耗较少;“AES”:运算速度快,安全性高,资源消耗少

缺点:“DES”:安全性低

非对称加密算法:

RSA 使用公钥与私钥的秘钥对进行加密和解密,安全性高,但是加密速度与解密速度特别慢;

(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 
(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 
(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

数字签名算法:

带有公钥私钥的消息摘要算法;

作用: 
1. 验证数据的完整性   (消息摘要算法)
2. 认证数据来源          (公钥解密)
3. 抗否认                     (检查一致性)

数字签名遵循:私钥签名,公钥认证;

常用的数字签名算法:RSA,DSA,ECDSA

 /**
     * 密钥对生成加解密算法 RSA 、 DSA 、 EC
     * RSA 摘要算法:  SHA1withRSA SHA224withRSA SHA256withRSA
     * DSA 摘要算法:  SHA1withDSA  SHA224withDSA   SHA256withDSA 
     * EC  摘要算法:  SHA1withECDSA SHA224withECDSA SHA512withECDSA
     */

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章