在 Node.js 中生成和验证密码哈希与 Python 的 werkzeug 相同
Generating and Verifying password hashes in Node.js same as Python's werkzeug
我正在将一个应用程序从 Python Flask 迁移到 ExpressJS。
我需要一些密码散列和验证方面的帮助。
在 Flask 中,你可以这样做:
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 哈希或密码,但我该如何检查密码?
在node中也很容易实现。使用 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'
});
我正在将一个应用程序从 Python Flask 迁移到 ExpressJS。 我需要一些密码散列和验证方面的帮助。 在 Flask 中,你可以这样做:
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 哈希或密码,但我该如何检查密码?
在node中也很容易实现。使用 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'
});