JSP(Java Server Pages)是一种动态网页技术,它允许在HTML或XML文档中直接嵌入Java代码片段和表达式。MySQL是一种关系型数据库管理系统,广泛用于存储和管理数据。
密码加密是将用户密码转换为不可读的形式,以防止数据泄露时密码被轻易破解。常见的加密方法包括哈希算法(如SHA-256)、加盐哈希等。
在用户注册、登录等场景中,需要对用户密码进行加密存储,以确保用户数据的安全。
以下是一个使用JSP和MySQL进行密码加密存储的示例:
<%@ page import="java.security.MessageDigest" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="java.sql.*" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
// 加盐
String salt = generateSalt();
String saltedPassword = salt + password;
// 哈希
String hashedPassword = hashPassword(saltedPassword);
// 存储到数据库
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
String sql = "INSERT INTO users (username, password, salt) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, hashedPassword);
pstmt.setString(3, salt);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
%>
<%!
private String generateSalt() {
return UUID.randomUUID().toString();
}
private String hashPassword(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = md.digest(password.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : hashBytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
%>
<%@ page import="java.security.MessageDigest" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="java.sql.*" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
String sql = "SELECT password, salt FROM users WHERE username = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
String storedPassword = rs.getString("password");
String salt = rs.getString("salt");
String saltedPassword = salt + password;
String hashedPassword = hashPassword(saltedPassword);
if (storedPassword.equals(hashedPassword)) {
// 登录成功
response.sendRedirect("welcome.jsp");
} else {
// 登录失败
response.sendRedirect("login.jsp?error=1");
}
} else {
// 用户不存在
response.sendRedirect("login.jsp?error=2");
}
rs.close();
pstmt.close();
conn.close();
} catch (ClassNotFoundException | SQLException | NoSuchAlgorithmException e) {
e.printStackTrace();
}
%>
<%!
private String hashPassword(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = md.digest(password.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : hashBytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
%>
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云