Мое приложение работало на PHP годами, и я использовал рекомендованный API хеширования паролей , начиная с PHP 5.5, для хранения паролей моих пользователей. Например:
$password = password_hash("my password", PASSWORD_DEFAULT);
В результате моя база данных полна паролей, таких как:
$2y$10$sjzYz7g/kVxpJUynC/...........pjKPh0z1QuU.Mlt7TVAiPW
Теперь я перемещаю свое приложение для запуска на NodeJS 12.3.0
вместо PHPи теперь я использую bcrypt
библиотеку примерно так:
const saltRounds = 10;
const password = await bcrypt.hash("my password", saltRounds);
Тот же хеш-пароль для чего-то вроде:
$2b$10$SYZH5Mj4Dy8dkKyRv1O/.........XNGPVBe8nPJjpnEjPZxx.
Я думал, что алгоритм,соль и раунды были в пределах строки, чтобы переход был плавным. Однако, когда я пытаюсь подтвердить пароль, который был сохранен в PHP, правильный пароль не проходит проверку:
// result === false
const result = await bcrypt.compare("my password", phpStoredHash);
Я действительно надеюсь, что мне не придется заставлять всех пользователей сбрасывать свои пароли. Как я могу проверить пароли PHP, хранящиеся в моем NodeJS
приложении?