2012-01-17 127 views
0

我只是把我的項目從本地主機到我的主機,並使用相同的(phpass)函數我收到不同的結果和返回的字符串的長度也不同。 (和一切工作本地主機btw)phpass返回不同的結果

所以相同的函數在線時返回false。我想知道問題可能是什麼。

這裏的結果:

輸入:

  • 本地主機:$ 2A $ 08 $ t5joFUIbEThylj/IyUVy7.WzMZm8fmKjsy0kZc/YxgqzkbYQWnlre
  • 主機:$ P $ 9 QiKVfJzpRzoToBCJg8FeaDIfcAJJ61

編輯:我打開TRUE標誌,使密碼便攜式,但它似乎並沒有工作。

編輯2:不適用於PHP 4或5,我DID開關便攜式模式!

回答

2

警告:默認情況下,庫會生成強大的系統特定的 密碼哈希,這些哈希不可移植。這意味着一旦創建, 用戶數據庫不能轉儲並導出到另一臺服務器。這個 行爲也可以在配置文件中更改。

- >Portable (PHPass) password hashes. Should I use them?

+0

你能告訴我我該如何使它現在工作? (PHP版本4.4.9,當我閱讀我必須有便攜模式時,如果我沒有弄錯) – BehnUm 2012-01-17 16:28:22

+0

你測試了新密碼和便攜模式嗎? – MasterCassim 2012-01-17 16:36:43

+0

是的,但它仍然返回false!我甚至把我的PHP切換到5(使用htaccess),它仍然無法工作!有什麼建議? – BehnUm 2012-01-17 18:50:20

2

如果我沒有記錯,phpass使用提供給它的最佳方法。在這種情況下,現場主機上可用的模塊似乎與localhost上的模塊不同,因此phpass必須選擇不同的方法。 「$ 2a $」表示bcrypt,「$ P $」表示phpass'內部散列。即,現場主機似乎沒有可用的bcrypt。

+0

你是對的,PHP版本是4.4.9,我只是不知道如何使它工作(我甚至打開便攜式模式標誌,但它仍然不起作用) – BehnUm 2012-01-17 16:29:41

+0

如果你得到一個結果在本地主機上以「$ 2a $」開頭,那麼你不使用便攜式散列。確保使用TRUE作爲第二個參數調用HashPassword()方法。 – 2012-01-17 16:42:51

+0

謝謝,我打開它,它現在可以工作 – BehnUm 2012-01-18 08:57:03

0

我終於發現問題不是phpass本身,但腳本導致了一個錯誤(mysql的真實姓名轉義是問題,阿賈克斯實際上是隱藏它從我這裏)反正,一切都很好,謝謝。