我正在使用Laravel注册用户。它像这样使用bcrypt:

$2y$10$kb9T4WXdz5aKLSZX1OkpMOx.3ogUn9QX8GRZ93rd99i7VLKmeoXXX

我目前正在制作另一个脚本,该脚本将使用python从其他来源验证用户身份。我安装了py-bcrypt并尝试了它。格式如下:
$2a$10$Vj0b0GZegbpXIIpa/lvi9OjkAFJ5zNzziVRW7yN9ssDKVQDX47XXX

但是在python上,由于invalid salt,我无法验证用户身份。

我注意到Laravel bcrypt使用$2y,而python使用$2a。我该如何解决?

笔记:
I used 10 rounds for both crypts.

最佳答案

我刚刚发现2a2y除了名称(前缀)非常相似。

将laravel哈希的2y替换为2a仍然可以保持哈希的完整性,即使替换身份,它也可以正常工作并与密码匹配。

就我而言(问题),解决方案是使用str.replace('$2y$', '$2a$'),并且一切正常。
现在py-bcrypt接受哈希,没有错误invalid salt

祝大家好运。

10-07 14:47