2014-03-12 26 views
0

我有一個內置laravel的系統,我創建了一個API。問題在於身份驗證。如何在java中計算與Laravel兼容的Bcrypt密碼

我有一個Android應用程序,並希望通過以下方式laravel系統進行身份驗證:

用戶輸入其在Android應用程序,密碼和用戶名的密碼和用戶名發送過網絡laravel(密碼將散列與bcrypt)。在服務器端,laravel讓用戶使用收到的用戶名,並將收到的密碼與存儲在數據庫中的密碼進行比較。

Laravel使用bcrypt來散列用戶的密碼。如果我理解了bcrypt算法,它使用了一些round和salt,所以調查laravel的代碼,我發現它默認使用round = 8,但我不知道它使用了什麼鹽。我嘗試了一個確定密碼的web bcrypt生成器,它與laravel(並存儲在數據庫中)計算的哈希不匹配。

有什麼建議嗎?

感謝

+0

對於您創建的每個散列,鹽都是(或至少應該是)隨機的。 – PeeHaa

+0

我預計的迴應。但是我需要'Auth :: attempt($ user)'的工作方式。它接收一個帶有普通密碼的$ user對象,對其進行散列並與數據庫中的密碼進行比較(我需要如何對密碼進行散列才能在我的Android應用程序中實現)。 – RdlP

+0

爲什麼你需要在android中對其進行哈希處理? – PeeHaa

回答

0

我需要做一個變通方法這裏工作,因爲當我用PHP生成散列以$ 2Y $開始,用java $ 2A $開始。

爲了解決這個問題,我在密碼匹配之前在java中創建了一個正則表達式來替換$ 2y $到$ 2a $並且適用於我。

在PHP中我使用的本地功能:

$hash = password_hash($pass, PASSWORD_DEFAULT);

,並在java中我用jbcrypt庫。