【发布时间】:2021-02-25 03:56:25
【问题描述】:
我在我的数据库中生成了哈希密码。在传入的请求中,我使用数据库中的散列密码检查了我的普通输入密码。例如,如果我的输入密码是 XXXX,并且如果在中间添加一些字符,则 bcrypt 比较方法返回 false。但是,如果我在输入密码的最后添加一些字符,我的 bcrypt 比较方法会返回 true。请帮忙告诉我为什么会这样。
我的代码。
const bcrypt = require('bcrypt');
const bcryptTest = async () => {
const input = "kw^#Ko38Q7GusXjd%L?DVXM^CVEF8&9c8L%4GupYcV/DZN3U7GN7Zfyd[Fi&yaNzss"
//let hashedPassword = await bcrypt.hash(input, 12);
//Hashed password generated from above
const hashedPassword = "$2b$12$GAFB9ahYHuu.2XQN5fqHoufHQUBuf2a8awNp67hJIN0xP77S5X2tK"
console.log('Hashed Password', hashedPassword);
const plainText = await bcrypt.compare(input, hashedPassword);
console.log(plainText);
}
【问题讨论】:
-
看看这个github issue,也许你会找到一些答案,或者你可以发布你的问题。 github.com/kelektiv/node.bcrypt.js/issues/860
-
Hash是如何产生的?使用 bcrypt?
-
是的,它使用 bcrypt @SandeepPatel
-
请显示minimal, reproducible example,包括您用作输入的确切密码以及生成哈希的代码。
-
@jfriend00 :添加了相关代码。请帮忙!!!