【问题标题】:Hashing passwords in Node.js the same way as in Drupal 7在 Node.js 中散列密码的方式与在 Drupal 7 中相同
【发布时间】:2017-05-02 13:32:29
【问题描述】:

我正在尝试将用户从 Drupal 7 迁移到 node.js 上的另一个项目。

而且我需要保留所有密码的现有密码。这意味着我需要像 Drupal 一样对密码进行哈希处理。

Drupal 默认使用带有盐的 SHA512。他们通过 PHP 的哈希函数多次运行哈希,以增加生成密码最终哈希的计算成本(一种称为 stretching 的安全技术)。

问题是,user_hash_password() 进行哈希处理,似乎很习惯。我真的不想对其进行逆向工程并重新发明轮子。

问题是,node.js 上有没有库可以做到这一点?

【问题讨论】:

    标签: node.js drupal hash passwords sha512


    【解决方案1】:

    可以通过drupal-hash模块完成。

    检查现有密码

    var drupalHash = require('drupal-hash');
    
    var clearPassword = 'superpassword';
    var passwordHash = '$S$DODRFsy.GX2iSkl2zJ4fsrGRt2S0FOWu0JSA3BqAmSayESbcY3w9';
    var isValid = drupalHash.checkPassword(clearPassword, passwordHash);
    // returns true or false 
    

    哈希新密码

    var drupalHash = require('drupal-hash');
    
    var newPassword = 'superpassword';
    var passwordHash = drupalHash.hashPassword(newPassword);
    // returns something like '$S$DODRFsy.GX2iSkl2zJ4fsrGRt2S0FOWu0JSA3BqAmSayESbcY3w9'
    

    检查旧密码是否需要更新

    var drupalHash = require('drupal-hash');
    
    var passwordHash = '$P$DxTIL/YfZCdJtFYNh1Ef9ERbMBkuQ91';
    var needsHash = drupalHash.needsNewHash(passwordHash);
    // return true or false 
    

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2014-06-09
      • 2012-12-10
      • 1970-01-01
      • 2020-08-09
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多