【问题标题】:Encrypt password in NodeJs in the same way Drupal 7 Does以与 Drupal 7 相同的方式在 NodeJs 中加密密码
【发布时间】:2022-01-17 11:44:18
【问题描述】:

我正在尝试将 Drupal 7 中存在的数据迁移到 nodeJs 平台, 存储在 Drupal 中的密码需要以相同的格式存储(加密格式,因为它们无法被解码)。 因此,对于现有数据(用户),我需要相同的密码散列技术,以便现有用户尝试登录时密码应该匹配。

总结要求:nodeJs平台中存储的密码:“一些散列密码”

用户输入的密码:“纯文本”

这样:hash(plain text) === "some hashed password"

我找到了一个 nodeJs 库Drupal Hash,但似乎无法正常工作。

我尝试过的代码片段:

var password = 'Hello@123';
var hashedExpectedPassword = '$S$DzjvIwyAB.A9CzV96g2GsE/hLzkXBI3OZdgGhZJBBJwDQANh.JuV'
var passwordHash = drupalHash.hashPassword(password).toString(`hex`);
console.log(passwordHash); ////$S$DW16ZF0m/1a3VRRp8ZT26jdjHEd4lwBMCoGyCfsOsQqMDF6w36j3

提前致谢

【问题讨论】:

    标签: node.js drupal password-encryption


    【解决方案1】:

    这是一个使用 bcrypt 包加密 node.js 中的密码的示例。 代码如下:

    const bcrypt = require('bcrypt')
    const saltRounds = 10
    
    
    const password = 'myPassword$123'
    console.log('password', password)
    const anotherPassword = 'anotherPassword$123'
    const hashedPassword = bcrypt.hash(password, saltRounds)
    console.log('hashedPassword', hashedPassword)
    
    void (async function () {
      let value = await bcrypt.hash(password, saltRounds);
      console.log('hash value', value);
    
      let isPasswordMatching = await bcrypt.compareSync(password, value); // true
      console.log('isPasswordMatching', isPasswordMatching);
      isPasswordMatching = await bcrypt.compareSync(anotherPassword, value);//false
      console.log('isPasswordMatching', isPasswordMatching);
    })();
    

    以上代码的以下参考链接很有用。请检查这些。

    1. https://www.npmjs.com/package/bcrypt
    2. https://stackoverflow.com/questions/44098013/nodejs-script-with-async-await-causing-syntax-error-v7-10-0

    【讨论】:

    • 我也试过这个方法,但是密码不匹配,要求将密码散列技术从Drupal7克隆到NodeJs。
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多