我想HashPassword($password)從 WordPress測驗(單元測驗)方法。
我如何檢查 HashPassword("123123") 是否會為其回傳正確的哈希值?
例如,我想做這樣的事情:
$hashFor123123 = "$P$P)230230832482349823";
$result = HashPassword("123123");
$this->assertSame($hashFor123123, $result);
但是,HashPassword方法每次都會回傳一個帶有哈希的新字串。這就是為什么我不能斷言。
如何測驗?
uj5u.com熱心網友回復:
密碼散列使用隨機salt,因此每次散列相同的密碼時,您將獲得不同的值。此處解釋了該理論,即使 WordPress 不使用 php 密碼散列函式,而是使用它們自己的。你不能比較哈希值;您只能檢查給定的未散列密碼是否與散列匹配。
隨機鹽阻止了網路爬行動物使用彩虹查找表根據哈希值恢復密碼。即使網路蠕蟲設法竊取您的 wp_users 表,這也有助于保護您用戶的密碼。縱深防御,這就是所謂的。
在 WordPress 中,您可以對密碼進行哈希處理,然后使用wp_hash_password()和wp_check_password()來檢查它,就像這樣。
$hash = wp_hash_password( '123123' );
if ( wp_check_password( '123123', $hash )) {
/* it worked */
} else {
/* it did not work */
}
不清楚為什么值得花時間對這個子系統進行單元測驗。它每天在世界各地的生產中使用數十億次。
uj5u.com熱心網友回復:
每次呼叫結果都不同的原因HashPassword是因為您的密碼在散列之前以隨機鹽為前綴。
要將明文密碼與已知哈希值進行比較,您必須呼叫CheckPassword.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370985.html
標籤:WordPress的 单元测试 盐 密码哈希
上一篇:Androidio.mockk.MockKException:找不到答案:日歷(靜態日歷#368的孩子)。getTime()
