可以分三类:对称加密、非对称加密和不可逆加密三类算法
一般同类型加解密算法,比较的纬度:速度,安全性,管理密钥安全性
加密方和解密方使用同一密钥
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
还有一般,对称加密比非对称加密速度快一点;安全性一般都很高,可变长度的密钥,长度越长安全性更高;管理密钥安全性,非对称加密会更好一点