gpt4 book ai didi

java - Java 中的 SQL。选择密码(md5)问题。 rs 不执行查询,抛出异常

转载 作者:行者123 更新时间:2023-11-29 04:48:10 26 4
gpt4 key购买 nike

我有一个需要用户名、密码和 ID 的登录系统。数据库中的密码以 MD5 格式加密。我的测试密码是test1,加密后是5a105e8b9d40e1329780。登录屏幕上的用户应输入 test1 作为密码并被允许进入系统。我只是不断收到弹出消息。

我的 SQL 查询如下所示:

String SQL = "SELECT login_judge.username, login_judge.password ,criminalrecords.ID FROM login_judge, criminalrecords "
+ "WHERE username = ? and password = md5(?) and ID = ?";
pst = conn.prepareStatement(SQL);
pst.setString(1, usernameF.getText());
pst.setString(2, passwordF.getText());
pst.setString(3, caseNoF.getText());

rs = pst.executeQuery();
if(rs.next())
{
// rest of code
}
else
{
// joption pane displaying info that something is wrong.
}

来自 phpMyadmin

UPDATE  `w1283057`.`login_judge` SET  `password` = MD5(  'test1' ) WHERE  `login_judge`.`username` =  'test1';

最佳答案

您的密码字段对于 MD5 哈希值来说太短。它应该有至少 32 个字符的空间,但看起来你已经定义了最多 20 个字符。

将 md5(test1) 的输出与您表中的值进行比较:

5a105e8b9d40e1329780d62ea2265d8a
5a105e8b9d40e1329780

由于哈希值不相等,登录被拒绝。

如果您不能更改列定义,您可以使用 substring 函数剪切散列:

       + "WHERE username = ? and password = substr(md5(?), 1, 20) and ID = ?";

关于java - Java 中的 SQL。选择密码(md5)问题。 rs 不执行查询,抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573826/

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