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