gpt4 book ai didi

java - 使用 MD5 哈希密码注册/登录 JAVA

转载 作者:行者123 更新时间:2023-11-29 17:41:11 25 4
gpt4 key购买 nike

我正在尝试创建一个使用 MD5 哈希密码的登录/注册系统。

到目前为止,我已经成功地对数据库中的密码进行了哈希处理,但是在尝试登录时它无法识别经过哈希处理的密码。

可能是一个简单的修复,任何帮助都可以:)

注册JAVA

String s8 = tfPassword.getText();

MessageDigest md = MessageDigest.getInstance("MD5");
md.update(s8.getBytes());
byte [] byteData = md.digest();

StringBuilder sb = new StringBuilder(32);
for (byte b : byteData) {
sb.append(String.format("%02x", b & 0xff));
}

Statement st = con.createStatement();

st.executeUpdate("insert into Login (StaffID, UName, PWord, Staff) values('"+StaffID+"','"+s7+"','"+sb+"','Yes')");

登录JAVA:

String s2 = tfPassword.getText();

MessageDigest md = MessageDigest.getInstance("MD5");
md.update(s2.getBytes());
byte [] byteData = md.digest();

StringBuilder sb = new StringBuilder(32);
for (byte b : byteData) {
sb.append(String.format("%02x", b & 0xff));
}

Statement st = con.createStatement();


// SQL Statements
st.executeQuery("SELECT * FROM login WHERE UName= '"+s1+"' and PWord = '"+sb+"'");

最佳答案

为了 future 在搜索“MD5 哈希密码”答案时发现此问题的灵魂的利益:

使用 MD5 哈希值作为密码已被破坏。不要这样做。

https://security.stackexchange.com/questions/19906/is-md5-considered-insecure

当我们讨论安全性主题时,我们还将鼓励使用带有绑定(bind)占位符的准备好的语句,而不是编写容易(或看起来容易)受到 SQL 注入(inject)攻击的动态 SQL。

<小时/>

看起来这个问题根本不是关于密码的 MD5 的。看起来这确实是一个简单得多的问题:

问:如何判断执行的 SELECT 语句是否返回一行?

答:如果 SQL 语句是 SELECT,则 executeQuery 方法返回 ResultSet 对象。使用 next 方法从结果集中检索下一行。

类似这样的事情:

    Statement st = null;
ResultSet rs = null;

try {

st = con.CreateStatement();
rs = st.executeQuery("SELECT '42' AS fortytwo");

while( rs.next() ) {
String foo = rs.getString("fortytwo");
// System.out.println("yay! we got another row!");
}

} catch (SQLException e) {
//
} finally {
if (rs != null) { rs.close(); }
...

关于java - 使用 MD5 哈希密码注册/登录 JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50006280/

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