常用的加密方式有哪些?
1、直接明文保存,比如用户设置的密码是“123456”,直接将“123456”保存在数
据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,
都可能采取的是这种方式。
2、使用对称加密算法来保存,比如3DES、AES等算法,使用这种方式加密是
可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量
的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、
分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好
的方式。
3、使用MD5、SHA1等单向HASH算法保护密码,使用这些算法后,无法通过
计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存
用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立
彩虹表进行查表,目前这种方式已经很不安全了。
4、特殊的单向HASH算法,由于单向HASH算法在保护密码方面不再安全,于
是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可
以在一定程度上增加难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,
这就会遇到“保护对称密钥”一样的问题。5、PBKDF2算法,该算法原理大致相当于在HASH算法基础上增加随机盐,并
进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使
得建表的难度都大幅增加。使用PBKDF2算法时,HASH算法一般选用sha1或者
sha256,随机盐的长度一般不能少于8字节,HASH次数至少也要1000次,这样安
全性才足够高,该算法也是美国国家标准与技术研究院推荐使用的算法。