Я использовал Laravel для регистрации пользователей. Он использует bcrypt следующим образом:
$2y$10$kb9T4WXdz5aKLSZX1OkpMOx.3ogUn9QX8GRZ93rd99i7VLKmeoXXX
В настоящее время я делаю еще один скрипт, который будет аутентифицировать пользователей из другого источника с помощью python. Я установил py-bcrypt
и попробовал. Формат выглядит следующим образом:
$2a$10$Vj0b0GZegbpXIIpa/lvi9OjkAFJ5zNzziVRW7yN9ssDKVQDX47XXX
Но на python я не могу аутентифицировать пользователя из-за invalid salt
.
Я заметил, что Larvel bcrypt использует $2y
тогда как python использует $2a
. Как мне обойти это?
заметки:
I used 10 rounds for both crypts.
Я только что узнал, что 2a
и 2y
очень похожи, кроме имени (префикс).
заменив 2y
хэша laravel, до 2a
прежнему сохраняет целостность хэша и должен работать правильно и соответствовать паролю, даже если вы замените его.
В моем случае (вопрос) решение заключалось в использовании str.replace('$2y$', '$2a$')
и все это работало хорошо. Теперь py-bcrypt принимает хеш без ошибочной invalid salt
.
Удачи, ребята.