常见非对称加密算法
常用的非对称加密算法有:
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算法