Chào các bạn trong quá trình thực hiện đồ án java desktop application tôi đã nhận khá nhiều câu hỏi của các bạn về các mã hóa mật khẩu trong hệ thống phần mềm của các bạn. Để các bạn có thể tham khảo tôi viết lại thành 1 ví dụ đơn giản bao gồm thêm dữ liệu (đăng ký) có mã hóa mật khẩu và so sánh dữ liệu đã mã hóa (login) bằng giải thuật md5.
Bảng dữ liệu đơn giản Users(username,password,gender)
Code mã hóa chuỗi theo giải thuật md5
public static String md5(String msg) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(msg.getBytes()); byte byteData[] = md.digest(); //convert the byte to hex format method 1 StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); } catch (Exception ex) { return ""; } }
Khi nhấn vào nút add
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn; conn = DriverManager.getConnection("jdbc:sqlserver://ntdan-lt;user=sa;password=Admin@123;database=Northwind;"); PreparedStatement command = conn.prepareStatement("Insert into Users(username, password,gender) values(?,?,?)"); command.setString(1, txtUser.getText()); command.setString(2, MDI_Java_md5.md5(txtPass.getText())); command.setInt(3, rdMale.isSelected() == true ? 1 : 0); command.executeUpdate(); JOptionPane.showMessageDialog(this, "Register OK !"); this.setVisible(false); } catch (Exception ex) { Logger.getLogger(FrmAdd.class.getName()).log(Level.SEVERE, null, ex); } }
Khi nhấn vào nút login
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn; conn = DriverManager.getConnection("jdbc:sqlserver://ntdan-lt;user=sa;password=Admin@123;database=Northwind;"); PreparedStatement command = conn.prepareStatement("Select * from Users where username=? and password = ?"); command.setString(1, txtUser.getText()); command.setString(2, MDI_Java_md5.md5(txtPass.getText())); ResultSet rs = command.executeQuery(); if (rs.next()) { JOptionPane.showMessageDialog(this, "Login OK !"); this.setVisible(false); } else { JOptionPane.showMessageDialog(this, "Login fail !"); } } catch (Exception ex) { Logger.getLogger(FrmAdd.class.getName()).log(Level.SEVERE, null, ex); } }
chúc các bạn thành công.
thay oi sao nó để la không tim thấy bieu tuong md5 trong string ạ
ThíchThích
Em hỏi gì tôi chưa hiểu
ThíchThích
Can I get the English Version of the tutorial please?
ThíchThích
Hi,
English version not ready !
But,there are some simple Vietnamese sentences, So, you can copy and paste through google translate from Vietnamese to English.
Sorry my friend, today i’m so busy.
ThíchThích
okay
ThíchThích
thay oi sao em dung dong lap
for (int i = 0; i < byteData.length; i++) {
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
no ma hoa vao co so du lieu nguyen dai so 0 ..em tinh dung BigInteger duoc khong thay
ThíchThích
tui chưa rõ em muốn làm gì?
ThíchThích
da…y em la em muon ma hoa trung voi ma hoa MD5 cua MySQL ma khong su dung vong lap
MessageDigest mig = MessageDigest.getInstance(“MD5”);
mig.update(msg.getBytes());
byte byteData[] = mig.digest();
BigInteger bigInt = new BigInteger(1,byteData);
return bigInt.toString(16);
ThíchThích
MDI_Java_md ????
ThíchThích
“MDI_Java_md ????” what your mean
ThíchThích
What is it?
ThíchThích
MDI_Java_md5,sorry
ThíchThích
no more question. Thank you. Very useful lessons))
ThíchThích
🙂
ThíchThích
🙂 where are you from freind?
ThíchThích
Cám ơn a nhiều ạ. Bài viết rất kỹ và hữu ích. Em kích vào like cho a, cơ mà đòi đăng nhập. Nhác tạo tài khoản quá. :p
ThíchThích
😀 tôi chia sẽ những gì tôi cảm thấy có ích bạn à, cảm ơn lời khen của bạn.
ThíchThích
anh làm như vậy đăng nhập bằng gì anh.mã hóa mỗi lần mỗi khác sao đăng nhập được
ThíchThích
Chào bạn.
Đây là ví dụ tôi cung cấp cho sinh viên và các bạn sinh viên đã sử dụng ok. Chổ khác nhau bạn nói tôi chưa rõ lắm.
ThíchThích