python bcrypt和node.js bcrypt

我有一个python脚本,将用户数据导入到使用bcrypt来散列用户密码的mongodb中。

来自mongodb的数据也将在node.js web应用程序中使用,确保py-bcrypt生成的散列是相同的正确方法是什么?

当运行node.js版本,我得到这个:

> bcrypt.genSalt(10, function(err, salt) { ... bcrypt.hash("a", salt, function(err, hash) { ..... console.log(hash); ..... }); ... }); undefined > $2a$10$tOT8MN1.3gsb6jWVL2hMRe0PHnJnXCxJX9xBewNl.2iRDnZCV/NeC 

并在python

 >>> import bcrypt >>> password =b"a" >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt(10)) >>> hashed '$2a$10$RzKqQppa3Y7ZZV8f7Ay5COFB5GMEGu7aLH7Fe2HchCyYF1gWVMZ/m' 

使用由节点生成的散列比较Python中的散列,返回:

 >>> node_hash = b"$2a$10$tOT8MN1.3gsb6jWVL2hMRe0PHnJnXCxJX9xBewNl.2iRDnZCV/NeC" >>> if bcrypt.hashpw(password, node_hash) == node_hash: ... print("It Matches!") ... else: ... print("Does not match") ... It Matches! 

有没有办法在Python中创build一个bcrypt散列用于node.js应用程序?

是的,和在Node中一样,把hash作为第二个参数来检查它。 用不同的随机盐创build一个不应该匹配。