Node.js 中的散列密码与 Drupal 7 中的方式相同
Hashing passwords in Node.js the same way as in Drupal 7
我正在尝试将用户从 Drupal 7 迁移到 node.js 上的另一个项目。
而且我需要保留所有密码的现有密码。这意味着我需要像 Drupal 一样散列密码。
Drupal 默认使用带盐的 SHA512。他们 运行 通过 PHP 的散列函数多次计算散列,以增加生成密码最终散列的计算成本(一种称为 stretching 的安全技术)。
问题是,进行散列的 user_hash_password() 似乎很习惯。我真的不想对它进行逆向工程并重新发明轮子。
问题是,node.js 上是否有任何图书馆可以做到这一点?
可以用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
我正在尝试将用户从 Drupal 7 迁移到 node.js 上的另一个项目。
而且我需要保留所有密码的现有密码。这意味着我需要像 Drupal 一样散列密码。
Drupal 默认使用带盐的 SHA512。他们 运行 通过 PHP 的散列函数多次计算散列,以增加生成密码最终散列的计算成本(一种称为 stretching 的安全技术)。
问题是,进行散列的 user_hash_password() 似乎很习惯。我真的不想对它进行逆向工程并重新发明轮子。
问题是,node.js 上是否有任何图书馆可以做到这一点?
可以用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