在 Laravel 中验证来自 Adonis 的 bcrypt 哈希
Verify bcrypt hash from Adonis in Laravel
嘿,让 Adonis 制作的密码哈希在 Laravel 中工作有点麻烦,一个例子是
// Adonis
> await Hash.make('password')
'$bcrypt$v=98$r=10$cIF1Ev2ATA6/iYv4kddXCQ$qcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs'
// Laravel
>>> Hash::make('password')
=> "y$kV7kssmFuFOydBewIp9ele8GMkWGDPpte6jGGDAabpsBmxtzWxfZW"
因此,从哈希值来看,他们似乎都使用了 10 轮。 Adonis 用 $
拆分盐和哈希
所以我想只是提取 salt + hash 并格式化为 Laravels 格式。然后在 Laravel 示例
中检查它
// Laravel
Hash::check('password', 'y$cIF1Ev2ATA6/iYv4kddXCQqcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs');
然而它返回 false 没有匹配。
不确定问题出在哪里。
第一个散列在 PHC string format:
$bcrypt$v=98$r=10$cIF1Ev2ATA6/iYv4kddXCQ$qcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs
此格式使用标准 base64 字母表以 base64 编码字节:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
第二个哈希值在 Modular Crypt Format:
y$kV7kssmFuFOydBewIp9ele8GMkWGDPpte6jGGDAabpsBmxtzWxfZW
此格式不使用标准的 Base64 字母表,而是使用 Unix Crypt 字母表:
./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
您需要使用典型的 Base64 字母表解码字节,然后使用 Crypt 字母表对其重新编码,或者为 Laravel 找到接受 PHC 格式的 BCrypt 实现。
嘿,让 Adonis 制作的密码哈希在 Laravel 中工作有点麻烦,一个例子是
// Adonis
> await Hash.make('password')
'$bcrypt$v=98$r=10$cIF1Ev2ATA6/iYv4kddXCQ$qcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs'
// Laravel
>>> Hash::make('password')
=> "y$kV7kssmFuFOydBewIp9ele8GMkWGDPpte6jGGDAabpsBmxtzWxfZW"
因此,从哈希值来看,他们似乎都使用了 10 轮。 Adonis 用 $
拆分盐和哈希所以我想只是提取 salt + hash 并格式化为 Laravels 格式。然后在 Laravel 示例
中检查它// Laravel
Hash::check('password', 'y$cIF1Ev2ATA6/iYv4kddXCQqcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs');
然而它返回 false 没有匹配。
不确定问题出在哪里。
第一个散列在 PHC string format:
$bcrypt$v=98$r=10$cIF1Ev2ATA6/iYv4kddXCQ$qcrDoGjsiB2eLq1/vCZWiAZ8bEs4+Qs
此格式使用标准 base64 字母表以 base64 编码字节:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
第二个哈希值在 Modular Crypt Format:
y$kV7kssmFuFOydBewIp9ele8GMkWGDPpte6jGGDAabpsBmxtzWxfZW
此格式不使用标准的 Base64 字母表,而是使用 Unix Crypt 字母表:
./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
您需要使用典型的 Base64 字母表解码字节,然后使用 Crypt 字母表对其重新编码,或者为 Laravel 找到接受 PHC 格式的 BCrypt 实现。