代码之家  ›  专栏  ›  技术社区  ›  BeetleJuice

如何在NodeJS应用程序中验证PHP哈希密码

  •  0
  • BeetleJuice  · 技术社区  · 6 年前

    我的应用程序在PHP上运行多年,我使用了推荐的 password hashing API

    $password = password_hash("my password", PASSWORD_DEFAULT);
    

    因此,我的数据库中充满了这样的密码:

    $2y$10$sjzYz7g/kVxpJUynC/...........pjKPh0z1QuU.Mlt7TVAiPW
    

    NodeJS 12.3.0 bcrypt library 这样地:

    const saltRounds = 10;
    const password = await bcrypt.hash("my password", saltRounds);
    

    相同的密码散列如下:

    $2b$10$SYZH5Mj4Dy8dkKyRv1O/.........XNGPVBe8nPJjpnEjPZxx.
    

    // result === false
    const result = await bcrypt.compare("my password", phpStoredHash);
    

    我真的希望我不必强迫所有用户重置他们的密码。如何验证PHP存储在 NodeJS 应用程序?

    0 回复  |  直到 6 年前
        1
  •  2
  •   kaczmen    6 年前

    使用 bcryptjs

    const bcrypt = require('bcryptjs')
    
    const hashPHP = "$2y$10$Lsn001yN38WssfQmJ5hM5.Ywa3AKB76YD/zUC9QNS5BPRr9QMWOTa"
    console.log(bcrypt.compareSync("my password", hashPHP));  // outputs: true
    
        2
  •  0
  •   Prabhjot Singh Kainth    6 年前

    这没有任何盐轮,密码默认使用BCRYPT

    $password = password_hash("my password", PASSWORD_DEFAULT);
    

    尝试进行以下更改:

    $password = password_hash("my password", PASSWORD_BCRYPT);