常见的加密算法
Posted ling-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见的加密算法相关的知识,希望对你有一定的参考价值。
常见的加密算法有:
- AES:高级加密标准,对称加密算法,密钥长度128/192/256位,速度快,安全性高,目前最常用的对称加密算法之一。
- DES:数据加密标准,对称加密算法,密钥长度56位,速度快但密钥太短安全性较差,已被AES算法取代。
- 3DES:增强版DES,使用3个不同的56位密钥,安全性比DES高但仍然不高,速度较慢。
- RSA::非对称加密算法,使用公开密钥和私有密钥,速度较慢但安全性高,一般用于encrypted对称加密算法的密钥。
- ECC:椭圆曲线加密算法,非对称加密算法,密钥长度短于RSA,速度更快、更省电,但实现较复杂。
- MD5:消息摘要算法,产生128位16进制的摘要,无法从摘要反推出原文,用于验证消息完整性,但不用于加密。已被SHA-1/2/3算法取代。
- SHA:安全散列算法,SHA-1产生160位消息摘要,SHA-2包括SHA-224、SHA-256、SHA-384、SHA-512等,用于验证消息完整性,但同样不用于加密。
- DSA:数字签名算法,用于产生和验证数字签名,速度较快,随机数字签名防止反推,但只能用于签名和验证,不能用于加密。
常用的密码学分类:
- 对称加密:使用同一密钥加密和解密,速度快,如AES、DES等。
- 非对称加密:使用公开密钥和私有密钥,速度慢但更安全,如RSA、ECC等
- 摘要算法:产生定长的消息摘要,用于验证消息完整性,如MD5、SHA等。
- 数字签名:使用非对称加密算法生成签名,用于认证和验证消息的发送者,如RSA、DSA等。
理解常用加密算法的原理与特性,对于学习网络安全和开发安全的软件应用至关重要。很多开发人员在无意中误用了加密算法,导致产品安全性大打折扣。加密算法同时也是许多安全认证考试的重点,是运维人员必备的基础知识。所以,加密算法属于任何开发和运维人员必学的基础内容,随着互联网安全的提升,这块知识的重要性也将愈加凸显。深入理解常用的加密算法及其原理,将对职业生涯有很大帮助。
常见加密算法
常见的加密算法可以分成三类,对称加密算法,公钥加密算法和单向加密算法。
对称加密
指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要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算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。
加密算法的选择
前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢?
我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
对称加密算法不能实现签名,因此签名只能非对称算法。
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
以上是关于常见的加密算法的主要内容,如果未能解决你的问题,请参考以下文章