使用md5散列密码注册/登录java

gdx19jrr  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(292)

我正在尝试创建一个使用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+"'");
yzxexxkh

yzxexxkh1#

对于那些在寻找“md5 hash password”答案时发现这个问题的未来灵魂来说:
对密码使用md5哈希是错误的。别这么做。
https://security.stackexchange.com/questions/19906/is-md5-considered-insecure
在讨论安全性的同时,我们还将鼓励使用带有绑定占位符的准备语句,而不是编写易受sql注入攻击的动态sql。
看起来问题根本不是关于密码的md5。看起来这真的是一个简单得多的问题:
问:如何判断执行的select语句是否返回了(ny)行?
a:那家公司 executeQuery 方法返回 ResultSet 如果sql语句是 SELECT . 使用 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(); }
       ...

相关问题