gpt4 book ai didi

java - 使用散列/加盐密码通过数据库验证成员

转载 作者:行者123 更新时间:2023-11-28 23:33:00 25 4
gpt4 key购买 nike

我正在使用 ipb 论坛软件。我有名称为实体、members_pass_hash 和 members_pass_salt 的成员表。我在编写查询语句以授权成员时遇到问题

    String Sql="Select * from members where name=? and members_pass_hash=?";

我知道这是错误的,因为密码不是以纯文本形式存储的,但我不知道该怎么做。

我想在 Java 中执行此操作,但我找不到任何相关指南。找了一整天,谢谢。

最佳答案

您在 SQL 命令末尾有一个备用的 "。除了 mySQL 命令行客户端(可能会导致错误,具体取决于您的客户端库)之外,也不需要 ;。

加盐密码哈希通常通过获取加盐字符串(有时它存储为加盐密码的前缀)、计算加盐值并比较结果来验证。

在伪代码中:

($id, $salt, $stored_hashed_password) = SELECT id, salt, hashed_password FROM members WHERE name=?
$entered_hash_password = hash_password($salt, $entered_cleartext_password)
if ($entered_hash_password == $stored_hash_password) {
say "Yeah, you got it!";
} else {
say "Go away!";
}

比较显然必须是字符串比较。

更新:关于散列密码的非常简单的例子:

明文密码:10盐“字符串”:5哈希函数:$cleartext * $salt散列密码:50

没有人可以从散列密码中提取原始密码。密码可以是 25、1、50、10、5。

真正的哈希函数要复杂得多且不可逆。

伪代码示例中使用的 hash_password() 函数必须是最初对密码进行哈希处理以将其存储到数据库中时使用的函数。检查用于“更改密码”的源代码函数

关于java - 使用散列/加盐密码通过数据库验证成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36814348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com