用JAVA写个密码管理器,用数据结构存储用户的密码信息和账号信息。实现密码的生成、存储、查询和加密等功能
时间: 2024-10-16 15:12:59 浏览: 28
Java学生成绩信息管理系统 使用说明 修改application.yml中的数据库账户密码 点击启动即可
创建一个简单的密码管理器应用,我们可以使用Java的集合框架如HashMap来存储用户信息,结合一些基本的加密技术(如BCrypt或SHA-256)来保护密码安全。以下是基础架构的一个简单示例:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
public class PasswordManager {
private HashMap<String, UserAccount> userAccounts = new HashMap<>();
// 定义用户账户类
public class UserAccount {
private String username;
private String hashedPassword;
public UserAccount(String username, String password) {
this.username = username;
this.hashedPassword = hashPassword(password);
}
// 加密密码的方法(这里使用SHA-256作为例子)
private String hashPassword(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] bytes = md.digest(password.getBytes());
return toHex(bytes);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Hashing algorithm not supported", e);
}
}
// 其他方法,如查询、添加等
public boolean checkPassword(String enteredPassword) {
return hashedPassword.equals(hashPassword(enteredPassword));
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", hashedPassword='" + hashedPassword + '\'' +
'}';
}
}
// 添加新用户
public void addUser(String username, String password) {
UserAccount account = new UserAccount(username, password);
userAccounts.put(username, account);
}
// 查询用户并验证密码
public UserAccount getUser(String username, String enteredPassword) {
if (userAccounts.containsKey(username)) {
return userAccounts.get(username).checkPassword(enteredPassword) ? userAccounts.get(username) : null;
}
return null;
}
// ...其他功能,比如删除用户等
// 辅助方法将字节数组转换为十六进制字符串
private static String toHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
}
```
阅读全文