1.直接明文保存,比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。
2.使用对称加密算法来保存,比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。
3.使用MD5、SHA1等单向HASH算法保护密码,使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
但是MD5加密已经不安全了,例如:http://www.cmd5.com就可以在线查找MD5的反解码。
此时我们可以使用:密码+盐的形式进行MD5加密,例如:12345
**@*&@*&@*&!*&^进行MD5加密传给服务端其中
**@*&@*&@*&!*&^是服务端加的盐12345是密码
4.高级HMAC算法,获取动态盐算法可以2017年1月16日10点10分即20171161010拼接到hmac上即这个密码一分钟内有效。oc下载事例:
https://github.com/mddios/EncryptionTools