Alex Xu 在影片中的第一個方法將現有使用者密碼經過 Hash 建立不可逆的代碼(稱為加密摘要),存入使用者資料中。當程式需要比對使用者輸入的密碼是否正確,需要將密碼 Hash,再與資料庫中的加密摘要比對。在此情況下,達成不以明碼儲存使用者密碼。
我曾負責以 PHP 與 CodeIgniter 開發一套系統,其中使用者帳號模組就是使用這個方式管理密碼。
但是第二個方法:將現有使用者密碼加上隨機建立的 salt,再經過 Hash,同時將 salt 以明碼,與加密摘要同時存入使用者資料中。可以避免駭客經由 Rainbow Table 藉由比對加密摘要找出原始密碼的攻擊方式。
後者能更進一步增加密碼安全性,可以用在新的專案上!