2012-11-24 72 views
2

我有一個運行在其上的鋰框架的PHP 5.3網絡服務器。驗證在NodeJS中使用php crypt()生成的哈希值?

我與CRYPT_BLOWFISH生成的密碼哈希值:

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

我在尋找的NodeJS腳本,使我能夠既檢查,併產生類似:

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

他們得到這個檢查哈希值:

我已經嘗試過目前爲止(現在檢查):

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 

是否有可能實現嗎?

回答

0

Crypt()函數使用不同的算法,這不是原始的Blowfish加密/解密。 由於node.js還沒有Crypt()實現,我還是建議使用SHA1/SHA256 /其他任何方法來加密密碼+ salt。