validation在NodeJS中使用php crypt()生成的哈希?

我有一个运行在其上的锂框架的PHP 5.3 Web服务器。

我有CRYPT_BLOWFISH生成的密码哈希值:

 public static function hash($password, $salt = null) { return crypt($password, $salt ?: static::salt()); } 

他们得到这个检查:

 public static function check($password, $hash) { return String::compare(crypt($password, $hash), $hash); } 

我正在寻找使我能够检查和生成类似哈希值的NodeJS脚本:

我已经尝试了这一点(现在检查):

 var c = crypto.createCipher('bf-cfb', password); var res = c.update(hash); res += c.final('utf8'); 

哪里(不是确切的变数,但看起来像这样):

 var hash = '$2a$10$nA5CV2XWJGn0cbKxSHU3GOp29ypHNVJDglJ0iNFx2zFkfy3mrsRZK'; // from php var salt = '$2a$10$nku2zgjB65zLdcVC1BIhG.'; // from php too var password = 'passwordInClearTextToCheck'; // correct password to check 

是否有可能实现?

Crypt()函数使用不同的algorithm,这不是原始的Blowfishencryption/解密。 由于node.js没有Crypt()实现,所以我build议使用SHA1 / SHA256 /其他的密码来encryption密码。