我想知道是否可以/明智地在我的網站上爲我的用戶密碼使用兩次password_hash。Double password_hash php
因此,讓我們這樣說:
在我的網站用戶註冊,他們輸入密碼,我們將調用這個
input
。在創建帳戶,密碼是
$firstHash = password_hash($input, PASSWORD_BCRYPT)
(例如起見,讓我們說 這個散列爲「thisFirstHash」一旦他們的密碼散列,它再次散列
$firstHash = password_hash($firstHash, PASSWORD_BCRYPT)
(例如着想,讓 說這個散列爲「thisSecondHash」)這第二個哈希是什麼,是存儲在數據庫中,所以現在當他們 登錄,服務器解密哈希散列。
當用戶登錄時,他們再次輸入密碼,我們再次將 調用那麼這個
input
服務器必須重新加密輸入與保存 哈希
$loginHash1 = password_hash($input, PASSWORD_BCRYPT)
服務器比較比較新
loginHash1
變量與保存 哈希password_verify($loginHash1,"thisSecondHash")
如果第一個哈希值匹配,比較第二哈希
password_verify($input,"thisFirstHash")
我不能完全得到這個在我小的測試環境中正常工作,我懷疑它是做換湯不換藥的輸入時,隨機鹽是在登錄階段不同。
所以我的問題是,
- 是否有可能做到這一點?
- 這樣做有益嗎?
請不要__roll你自己的密碼散列。 PHP提供['password_hash()'](http://php.net/manual/en/function.password-hash.php) 和['password_verify()'](http://php.net/manual/) en/function.password-verify.php)請使用它們,我可能想使用你的網站有一天 這裏有一些[關於密碼的好主意](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet ) 如果您使用5.5以前的PHP版本[此處提供了兼容包](https://github.com/ircmaxell/password_compat) – RiggsFolly
否 - 這不明智,並且不會增加安全性。 –
也許如果你把第一個散列結果反過來,然後用base64對它進行編碼,然後散列那個....記住任意數量的步驟是安全性的關鍵 – Ray