密码存到数据库时加密

String loginPassword = request.getParameter("loginPassword");

acceptCompany.setLoginPassword(MD5Utils.getJavaSecurityMD5(loginPassword));//插入密码时加密

acceptCompany = acceptCompanyService.insertAcceptCompany(acceptCompany);//把所有数据存入数据库

好的,我可以帮您解答这个问题。 首先,需要在注册页面中添加一个密码输入框。在用户提交表单,将密码的明文使用MD5算法进行加密,然后将加密后的密文存储到数据库中。 以下是一个简单的JavaWeb注册页面示例: ```html <!DOCTYPE html> <html> <head> <title>用户注册</title> </head> <body> <h1>用户注册</h1> <form method="post" action="register"> <label>用户名:</label> <input type="text" name="username" required><br> <label>密码:</label> <input type="password" name="password" required><br> <button type="submit">注册</button> </form> </body> </html> ``` 在后台Java代码中,需要使用Java自带的MessageDigest类进行MD5加密,并将加密后的密码存储到数据库中。以下是示例代码: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class RegisterServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); // 使用MD5算法进行密码加密 String encryptedPassword = encryptPassword(password); // 将用户名和加密后的密码存储到数据库中 try { Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); PreparedStatement stmt = conn.prepareStatement("INSERT INTO user (username, password) VALUES (?, ?)"); stmt.setString(1, username); stmt.setString(2, encryptedPassword); stmt.executeUpdate(); response.sendRedirect("login.jsp"); } catch (SQLException e) { e.printStackTrace(); response.sendRedirect("register.jsp"); } } private String encryptPassword(String password) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bytes = md.digest(password.getBytes()); StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(Integer.toHexString((b & 0xFF) | 0x100).substring(1, 3)); } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } } ``` 需要注意的是,为了保证密码的安全性,建议在密码加密添加一些随机字符串作为“盐值”,以增加密码的复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值