【问题标题】:Verify bcrypt hash from Adonis in Laravel在 Laravel 中验证来自 Adonis 的 bcrypt 哈希
【发布时间】:2022-01-23 03:19:34
【问题描述】:

嘿,在 Laravel 中使用 Adonis 制作的密码哈希有点麻烦,例如

// Adonis
> await Hash.make('password')
'$bcrypt$v=98$r=10$cIF1Ev2ATA6/iYv4kddXCQ$qcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs'

// Laravel
>>> Hash::make('password')
=> "$2y$10$kV7kssmFuFOydBewIp9ele8GMkWGDPpte6jGGDAabpsBmxtzWxfZW"

所以看看他们似乎都使用了 10 轮的哈希值。 Adonis 用 $ 分割盐和散列

所以我想只是以 Laravel 格式提取盐 + 哈希和格式化。然后在 Laravel 示例中检查它

// Laravel
Hash::check('password', '$2y$10$cIF1Ev2ATA6/iYv4kddXCQqcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs');

但是它返回 false 不匹配。

不确定问题出在哪里。

【问题讨论】:

    标签: laravel bcrypt adonis.js


    【解决方案1】:

    第一个哈希在PHC string format:

    $bcrypt$v=98$r=10$cIF1Ev2ATA6/iYv4kddXCQ$qcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs
    

    此格式使用标准 base64 字母表对 base64 中的字节进行编码:

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
    

    第二个哈希在Modular Crypt Format:

    $2y$10$kV7kssmFuFOydBewIp9ele8GMkWGDPpte6jGGDAabpsBmxtzWxfZW
    

    此格式不使用标准 Base64 字母,而是使用 Unix Crypt 字母:

    ./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
    

    您需要使用典型的 Base64 字母对字节进行解码,然后使用 Crypt 字母对其重新编码,或者为 Laravel 找到一个接受 PHC 格式的 BCrypt 实现。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2016-06-06
    • 1970-01-01
    • 2021-07-16
    • 2017-04-05
    相关资源
    最近更新 更多