如何在java中计算一个与Laravel兼容的Bcrypt密码

时间:2014-03-12 20:08:27

标签: java php android laravel bcrypt

我有一个内置laravel的系统,我已经创建了一个API。问题出在身份验证中。

我有一个Android应用程序,并希望通过以下方式使用laravel系统进行身份验证:

用户在Android应用中键入其密码和用户名,密码和用户名通过网络发送到laravel(密码将使用bcrypt进行散列)。在服务器端,laravel使用收到的用户名获取用户,并将收到的密码与存储在数据库中的密码进行比较。

Laravel使用bcrypt来散列用户的密码。如果我理解bcrypt算法它使用了一些圆形和盐,所以研究laravel的代码我发现它默认使用round = 8但我不知道它使用了什么盐。我尝试使用web bcrypt生成器来获取确定的密码,它与laravel的哈希计算不匹配(并存储在数据库中)。

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:0)

我需要在这里做一个解决方法,因为当我使用PHP生成时,hash以$ 2y $开头,java以$ 2a $开头。

要解决这个问题,我在密码匹配之前在java中创建一个正则表达式,将$ 2y $替换为$ 2a $并且适用于我。

在PHP中,我使用了原生函数:

$hash = password_hash($pass, PASSWORD_DEFAULT);

在java中我使用了jbcrypt lib。

答案 1 :(得分:0)

使用Bcrypt.checkpw("plain_password", "encrypted_password")对我有用。我一开始用 $ 2a $ 替换了 bcrypt 加密哈希。