用java写一个信息安全身份认证系统
时间: 2023-08-16 17:07:04 浏览: 45
好的,以下是用 Java 实现一个基于信息安全的身份认证系统的基本框架:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class AuthSystem {
private Map<String, String> users;
public AuthSystem() {
users = new HashMap<>();
}
public void register(String username, String password) {
String hashedPassword = hashPassword(password);
users.put(username, hashedPassword);
System.out.println("User " + username + " registered");
}
public boolean login(String username, String password) {
String hashedPassword = hashPassword(password);
if (users.containsKey(username) && users.get(username).equals(hashedPassword)) {
System.out.println("User " + username + " logged in");
return true;
} else {
System.out.println("Invalid username or password");
return false;
}
}
private String hashPassword(String password) {
String hashedPassword = null;
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(password.getBytes());
byte[] bytes = md.digest();
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
hashedPassword = sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return hashedPassword;
}
public static void main(String[] args) {
AuthSystem authSystem = new AuthSystem();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Enter 1 to register, 2 to login, or 3 to exit");
int choice = scanner.nextInt();
scanner.nextLine();
if (choice == 1) {
System.out.println("Enter username:");
String username = scanner.nextLine();
System.out.println("Enter password:");
String password = scanner.nextLine();
authSystem.register(username, password);
} else if (choice == 2) {
System.out.println("Enter username:");
String username = scanner.nextLine();
System.out.println("Enter password:");
String password = scanner.nextLine();
authSystem.login(username, password);
} else if (choice == 3) {
break;
} else {
System.out.println("Invalid choice");
}
}
}
}
```
以上代码中,我们使用了 Java 的 MessageDigest 类来对用户的密码进行 SHA-256 哈希,确保用户密码不会明文存储。身份认证系统提供了注册和登录功能,当用户注册时,系统将其用户名和哈希过的密码存储在用户列表中。当用户登录时,系统将用户输入的密码哈希后与存储在列表中的密码进行比较,如果匹配,则认为登录成功。在主函数中,我们使用了 Scanner 类来获取用户输入,并根据用户选择来执行不同的操作。