[英]Register/Login using a MD5 hash Password JAVA
我正在嘗試創建使用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+"'");
為了將來的靈魂的利益,他們在搜索有關“ MD5哈希密碼”的答案時發現了這個問題:
使用MD5哈希作為密碼已損壞 。 不要這樣
https://security.stackexchange.com/questions/19906/is-md5-considered-insecure
在討論安全性主題時,我們還將鼓勵使用帶綁定占位符的預處理語句,而不是編寫容易(或似乎)容易受到SQL注入攻擊的動態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(); }
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.