有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java pbkdf2盐渍哈希密码验证

我有一个用户数据库,里面有咸哈希密码和他们登录的Java应用程序,这样做更好吗

SELECT COUNT(*) FROM `--database--` WHERE `username`= ? AND `passwordHash`= ?;

然后让他们登录,如果计数是1,或者

SELECT `passwordHash` FROM `--database--` WHERE `username`= ?;

。。。然后在用户应用程序上进行本地验证

哪个更安全?-我通常会用第一种方法,但我一直看到第二种方法在这里和那里出现

作为参考,我使用的系统:https://codereview.stackexchange.com/questions/55900/password-hashing-method-in-java


共 (1) 个答案

  1. # 1 楼答案

    在我看来,数据库也会有salt,应用程序需要它来计算散列。因此你应该使用

    SELECT `passwordHash`, `Salt` FROM ` database ` WHERE `username`= ?;
    

    并在应用程序级别执行比较

    这种责任划分将在以后构建身份验证机制时派上用场,例如,如果添加lockout机制:

    SELECT `passwordHash`, 
           `Salt`, 
           `LockoutStatus` 
    FROM   ` database ` 
    WHERE  `username`= ?;
    

    如果您没有使用特定于用户的salt或锁定,则可能存在安全问题。请参阅有关此主题的oWASP guidance