2016-03-10 38 views
0

將應用程序從Python Flask移動到ExpressJS。 我需要一些密碼哈希和非常有用的幫助。 在瓶,你可以這樣做:在Node.js中生成和驗證密碼哈希與Python的werkzeug相同

from werkzeug import generate_password_hash, check_password_hash 
pass = 'abcd' 
pass_hash = generate_password_hash(pass) 
check_password_hash(pass_hash, pass) 

而且在4線你如果密碼對應的哈希一個布爾響應檢查。

現在到NodeJS:我知道如何創建sha256哈希,HMAC哈希或密碼,但我將如何檢查密碼?

回答

0

在節點中實現它也很容易。使用https://github.com/ncb000gt/node.bcrypt.js/ 以下是koa的示例。

let bcrypt = require('co-bcrypt'); 

let storedHash = yield bcrypt.hash("user_password", 10, null); // to get hash 

let isValid = yield bcrypt.compare("user_password", storedHash); // to compare 

如果你想使用pbkdf2,這裏是另一個例子。

const crypto = require('crypto'); 
crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, key) => { 
    if (err) throw err; 
    console.log(key.toString('hex')); // 'c5e478d...1469e50' 
}); 

文檔:https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback

+0

聯合bcrypt實現bcrypt,但問題使用PBKDF2與HMAC-SHA1的wekzeug功能。這兩種方法是完全不同的(但具有相同的目的)。 –

+0

你說得對,我修改了答案。 –