2016-06-08 22 views
1

假設您使用內置於php中的password_hash和password_verify函數,並使用默認的哈希算法(當前爲bcrypt)。現在,鑑於這是默認設置,並且如果更改,這會影響將來的password_verify函數,不是嗎?那麼,程序員是否需要在將來編寫代碼來檢查這個問題,也就是說,如果PASSWORD_DEFAULT!= bcrypt,使用bcrypt繼續驗證過程,然後在給定新算法的情況下更新數據庫?如果默認的password_hash散列在php中得到更新,是否會影響用戶未來的登錄嘗試?

回答

3

否,更換算法或成本不會因爲算法和成本是存儲的散列的部分影響password_verify。如果你看到的是password_hash的規格,那麼它的狀態爲

所使用的算法,成本和鹽分作爲散列的一部分返回。因此,所有需要驗證散列的信息都包含在其中。這允許password_verify()函數驗證散列,而不需要單獨存儲salt或算法信息。

您可以使用password_needs_rehash http://php.net/manual/en/function.password-needs-rehash.php來檢查是否需要更新存儲的密碼。所以PHP已經爲你支持所有這些,以安全的方式對密碼進行哈希處理。

相關問題