在Node.js中生成和验证密码哈希值与Python的werkzeug相同

时间:2016-03-10 15:14:52

标签: node.js hash cryptography passwords pbkdf2

我将应用程序从Python Flask移动到ExpressJS。 我需要一些密码散列和非常好的帮助。 在Flask中,您可以这样做:

app.directive('taskItem',  function() {

return {
    scope:{
        taskItem: '='
    },
    restrict: 'A',
    template: "<tr><td>{{$index}}</td>" +
    "<td>{{taskItem.name}}</td>" +
    "<td>{{taskItem.activity}}</td>" +
    "<td>{{taskItem.time}}</td>" +
    "<td><button type='button' ng-click='editRow($index)' class='btn btn-default '>Edit</button></td>" +
    "<td><button type='button' ng-click='removeRow($index)' class='btn  btn-default'>Delete</button></td>"+
    "</tr>",
    replace: false


};
});

在4行中,您有一个布尔响应,检查密码是否与散列相对应。

现在到NodeJS:我知道如何创建sha256哈希,HMAC哈希或密码,但我如何检查密码?

1 个答案:

答案 0 :(得分:0)

在节点中轻松搞定它也很容易。使用https://github.com/ncb000gt/node.bcrypt.js/ 这是koa的例子。

{
    "ok":true,"messages": [
        {
        "type":"message",
        "user":"U0KTA20K0",
        "text":"123",
        "ts":"1457615693.000003"
        },

        {
         "user":"U0KTA20K0",
         "type":"message",
         "subtype":"channel_join",
         "text":"<@U0KTA20K0|julian_blair> has joined the 
channel","ts":"1457615234.000002"}
    ],

"has_more":false
}

如果你想使用pbkdf2,这是另一个例子。

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

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