目录

加解密算法介绍

可以分三类:对称加密、非对称加密和不可逆加密三类算法

一般同类型加解密算法,比较的纬度:速度,安全性,管理密钥安全性

对称加密算法

通俗解释

加密方和解密方使用同一密钥

常见算法

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高

非对称加密算法

通俗解释

加密方和解密方使用同一对密钥,公钥给其他系统用于加密(可以给多个系统),私钥自己系统保留用于解密(只能自己持有,只有自己可以解密)

常见算法

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学

不可逆加密算法

通俗解释

单向加密,不可逆,一般用于生成签名,防篡改,也称散列算法

常见算法

MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文

SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值

加密算法的选择

由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。

对称加密算法不能实现签名,因此签名只能非对称算法。

由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

那采用多少位的密钥呢? RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

我的理解

现在机器一般硬件条件比较好,加密非大文本数据,如果考虑内部系统加解密,一般使用对称加密算法,如:DES/AES;如果考虑与外部系统交互,一般使用非对称加密算法,如:RSA;如果考虑只做签名,防篡改,不管是接口传数据或者文件供下载,均可以使用不可逆加密算法(散列算法),如:MD5,SHA

还有一般,对称加密比非对称加密速度快一点;安全性一般都很高,可变长度的密钥,长度越长安全性更高;管理密钥安全性,非对称加密会更好一点

参考帖子

各种加解密算法比较:http://blog.csdn.net/pengzp/article/details/6556674

目前常用的加密解密算法:http://www.cnblogs.com/lancidie/archive/2013/03/16/2963468.html