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


How to calculate in java a Bcrypt password compatible with Laravel

我有一个系统内置在laravel,我已经创建了一个API。

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

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

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

任何建议吗?

谢谢

我需要做一个工作区在这里工作,因为当我用PHP生成,哈希开始$2y$和java开始$2a$。

为了解决这个问题,我在java中创建了一个正则表达式,然后在密码匹配之前将$2y$替换为$2a$,并为我工作。

在PHP中,我使用了本地函数:

$hash = password_hash($pass, PASSWORD_DEFAULT);

我使用Bcrypt.checkpw("plain_password", "encrypted_password")工作。我在开头用$2a$替换了bcrypt加密散列。