在Node.js中哈希密码的方式与Drupal 7相同

时间:2016-12-16 17:40:46

标签: node.js drupal hash passwords sha512

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

我需要为所有这些密码保留现有密码。这意味着我需要以与Drupal相同的方式散列密码。

Drupal默认使用SHA512和salt。它们通过PHP的散列函数多次运行散列,以增加生成密码的最终散列(称为stretching的安全技术)的计算成本。

问题是,user_hash_password()进行散列,似乎非常习惯。我真的不想对它进行逆向工程并重新发明轮子。

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

1 个答案:

答案 0 :(得分:0)

可以使用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