【发布时间】:2020-03-04 20:57:38
【问题描述】:
我的应用程序在 PHP 上运行多年,我使用自 PHP 5.5 起推荐的 password hashing API 来存储我的用户密码。例如:
$password = password_hash("my password", PASSWORD_DEFAULT);
因此,我的数据库中充满了这样的密码:
$2y$10$sjzYz7g/kVxpJUynC/...........pjKPh0z1QuU.Mlt7TVAiPW
现在我正在移动我的应用程序以在 NodeJS 12.3.0 而不是 PHP 上运行,我现在像这样使用 bcrypt library:
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);
我真的希望我不必强迫所有用户重置密码。如何验证存储在我的NodeJS 应用程序中的 PHP 密码?
【问题讨论】:
标签: php node.js hash passwords