2012-02-29 105 views
1

我正在將站點從Wordpress轉換爲在Codeigniter中開發的自定義CMS。我被告知Wordpress使用PHPass來哈希他們的密碼,所以我使用PHPass庫(如this site所述)試圖無縫地轉換用戶而不必重置或更改其密碼。使用PHPass生成相同的密碼哈希值

我在我的應用程序中工作正常,但它不會生成與Wordpress使用相同的密碼哈希值。我假設它與某種網站密鑰有關,但我沒有任何運氣。我怎樣才能讓PHPass生成相同的密碼哈希?

回答

0

有幾種可能性。他們要麼使用不同的散列算法,要麼使用哈希算法或其他混淆方法。如果Wordpress用它們的哈希函數來代碼,那麼你就不得不使用它們的鹽表或單鹽來改變它們的哈希值 - 但我懷疑你會得到那個結果。我證實PHPass確實支持salting以及其他哈希混淆方法,所以其中之一可能就是哈希不相同的原因。

http://www.openwall.com/articles/PHP-Users-Passwords

+0

所以,基本上,我卡住讓人重置/更改密碼?使用PHPASS的 – Motive 2012-02-29 22:52:28

+0

有一個可移植性設置。如果它是錯誤的,那麼您將無法獲取密碼,但如果設置爲true,則應該可以。 – 2012-03-01 07:57:47

8

您將無法獲得PHPass產生兩次相同的哈希 - 它使用一個隨機鹽。該鹽存儲在密碼哈希中。

雖然你不需要生成相同的散列,但是 - 複製舊散列,並使用PHPass的CheckPassword($ pass,$ hash)來檢查密碼。將數據庫中的哈希值作爲$ hash,並將密碼輸入爲$ pass,如果它們匹配,則返回true。

HashPassword()方法僅用於創建新密碼散列(用於新密碼),不用於與現有密碼進行比較。