2014-07-03 30 views
1

我在JavaScript中有如下代碼,在運行的NodeJS:解密密碼的創crypto.pbkdf2對象

encryptPassword: function(password) { 
    if (!password || !this.salt) return ''; 
    var salt = new Buffer(this.salt, 'base64'); 
    return crypto.pbkdf2Sync(password, salt, 10000, 64).toString('base64'); 
} 

我如何能實現解密函數? 它可以在Java或JavaScript中。

Thx!

回答

4

PBKDF2是一種單向哈希算法。解密生成的散列是不可能的。你可以閱讀更多關於這個here

單向散列執行一組數學運算,它將輸入轉換成一個(大部分)唯一輸出,稱爲摘要。 由於這些操作是單向的,因此無法'解密'輸出,您無法將摘要轉換爲原始輸入。

如果要使用PBKDF2存儲和比較密碼,可能對pbkdf2庫感興趣。它使密碼的生成和比較變得容易:

var pbkdf2 = require('pbkdf2'); 
var p = 'password'; 
var s = pbkdf2.generateSaltSync(32); 
var pwd = pbkdf2.hashSync(p, s, 1, 20, 'sha256'); 
var bool = pbkdf2.compareSync(pwd, p, s, 1, 20, 'sha256'); 
+0

Thx。沒有你的代碼,密碼密碼很容易。我們可以比較字符串。據我瞭解,在同樣的兩個字符串上使用我的函數將返回相同的哈希密碼。 – yonatan