PHP開發者對md5()這個函數是熟悉不過了,很多開發者都使用md5('abc123')對用戶密碼進行加密處理,這樣做沒有錯,但是安全性還是很低的,因為很多網站的用戶數據都是用md5進行加密處理的,所以就發生了撞庫事件,最典型的就是前些年12306火車票網站上的用戶信息泄露事件。很多人在多個網站使用相同的密碼,黑客將A站的用戶密碼和B站的密碼對比發現是相同的,於是A站的密碼就登錄上了B站。另外一個,md5算法很早就能破解了,所以單單md5處理是不安全的。
那么我們可以使用md5加salt來增強加密后的密碼安全性,salt及鹽值,這個值要隨機生成,可在用戶注冊的時候和密碼一起生成並保存到數據庫中,用戶登錄驗證的時候再把密碼和鹽值一起組合驗證。

上面的代碼將密碼和鹽值以及常量混合,再md5的到一個復雜的加密后的字符串,然后將加密后的字符串$md5pass和鹽值$salt保存到數據表中,驗證的時候再拿出來,按照同樣的方式組合,如果組合加密后的字符串與數據表中的$md5pass值一樣,那么就驗證成功了。總的來說設置相對復雜的密碼加鹽處理后破解難度還是很大的。
