首先创建User.java
public class User {
private String username;
private String encryptedPassword;
public User(String username, String password) {
this.username = username;
this.encryptedPassword = encryptPassword(password);
}
private String encryptPassword(String password) {
return BCrypt.hashpw(password, BCrypt.gensalt());
}
// Getters and setters...
}
UserDAO.java
java.util.HashMap;
import java.util.Map;
public class UserDAO {
private static final Map<String, User> users = new HashMap<>();
public boolean register(User user) {
if (users.containsKey(user.getUsername())) {
return false;
}
users.put(user.getUsername(), user);
return true;
}
public boolean login(String username, String password) {
User user = users.get(username);
return user != null && BCrypt.checkpw(password, user.getEncryptedPassword());
}
}
登录注册逻辑Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
UserDAO userDAO = new UserDAO();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1.注册 2.登录 3.退出");
int choice = scanner.nextInt();
scanner.nextLine(); // 清除换行符
switch (choice) {
case 1:
System.out.print("输入用户名: ");
String regUsername = scanner.nextLine();
System.out.print("输入密码: ");
String regPassword = scanner.nextLine();
if (userDAO.register(new User(regUsername, regPassword))) {
System.out.println("注册成功");
} else {
System.out.println("用户名已存在");
}
break;
case 2:
System.out.print("用户名: ");
String loginUsername = scanner.nextLine();
System.out.print("密码: ");
String loginPassword = scanner.nextLine();
if (userDAO.login(loginUsername, loginPassword)) {
System.out.println("登录成功");
} else {
System.out.println("用户名或密码错误");
}
break;
case 3:
System.exit(0);
}
}
}
}
此实现包含内存存储、BCrypt密码加密和基础交互逻辑。实际应用需替换UserDAO为数据库操作,并添加异常处理。依赖库需添加jBCrypt实现密码加密。