====== 加解密算法介绍 ====== 可以分三类:对称加密、非对称加密和不可逆加密三类算法 一般同类型加解密算法,比较的纬度:**速度**,**安全性**,**管理密钥安全性** ===== 对称加密算法 ===== ==== 通俗解释 ==== 加密方和解密方使用同一密钥 ==== 常见算法 ==== 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