Tôi sử dụng jsp và servlet trong ứng dụng web của mình. tôi cần lưu trữ mật khẩu trong cơ sở dữ liệu. Tôi thấy rằng băm sẽ là cách tốt nhất để làm điều đó. Tôi đã sử dụng mã này để làm điều đó.cách lưu trữ mật khẩu trong cơ sở dữ liệu?
<%@page import="com.jSurvey.entity.*" %>
<%@page import="java.security.MessageDigest" %>
<%@page import="java.security.NoSuchAlgorithmException" %>
<%@page import="java.math.BigInteger" %>
<%@page import="com.jSurvey.controller.*" %>
<%@page import="sun.misc.BASE64Encoder" %>
<%try {
String user = request.getParameter("Username");
String pass = request.getParameter("Password1");
String name = request.getParameter("Name");
String mail = request.getParameter("email");
String phone = request.getParameter("phone");
String add1 = request.getParameter("address1");
String add2 = request.getParameter("address2");
String country = request.getParameter("country");
Login login = new Login();
Account account = new Account();
login.setId(user);
login.setPassword(pass);
if (!(add1.equals(""))) {
account.setAddress1(add1);
}
if (!(add2.equals(""))) {
account.setAddress2(add2);
}
if (!(country.equals(""))) {
account.setCountry(country);
}
account.setId(user);
account.setMail_id(mail);
if (!(phone.equals(""))) {
account.setPhone_no(Long.parseLong(phone));
}
account.setName(name);
java.security.MessageDigest d = null;
d = java.security.MessageDigest.getInstance("SHA-1");
d.reset();
d.update(pass.getBytes("UTF-8"));
byte b[] = d.digest();
String tmp = (new BASE64Encoder()).encode(b);
account.setPassword(tmp);
account.setPrivilege(1);
LoginJpaController logcon = new LoginJpaController();
AccountJpaController acccon = new AccountJpaController();
logcon.create(login);
acccon.create(account);
session.setAttribute("user", user);
response.sendRedirect("dashboard.jsp");
} catch (NumberFormatException ex) {
out.println("Invalid data");
}
%>
Khi tôi cố gắng in giá trị của tmp, tôi nhận được một số giá trị khác.i đoán giá trị băm của mật khẩu. Nhưng khi tôi lưu dữ liệu này vào cơ sở dữ liệu, mật khẩu ban đầu được lưu ở đó ngoài giá trị trong tmp ..
Tôi đang sử dụng derby java làm cơ sở dữ liệu.
Vấn đề là gì ???
Hiện chúng tôi một số mã db của bạn. Ngoài ra, bạn nên sử dụng [muối] (http://en.wikipedia.org/wiki/Salt_%28cryptography%29). –
Mã hóa bắt buộc Bài viết kinh dị: http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html –