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

时间:2012-11-24 00:38:47

标签: php node.js authentication cryptography openssl

我有一个运行了Lithium框架的PHP 5.3网络服务器。

我使用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

有可能实现吗?

1 个答案:

答案 0 :(得分:0)

Crypt()函数使用不同的算法,这不是原始的Blowfish加密/解密。 由于node.js还没有Crypt()实现,我建议使用SHA1 / SHA256 /其他任何方式哈希密码+ salt。