给上面代码增加修改密码功能
时间: 2024-10-17 22:10:01 浏览: 4
要在上述代码中添加修改密码的功能,我们需要在`PersonalBankAccount`类中新增一个方法,例如`changePassword`。这里假设密码是字符串形式,并且为了保证安全性,密码不会直接存储,而是通过哈希算法进行储存。下面是修改后的代码片段:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class PersonalBankAccount {
// ...
// 添加密码相关的属性和方法
private String password; // 私有变量,保存原始密码
private String hashedPassword; // 存储加密后的哈希值
// 初始化密码时加密存储
public PersonalBankAccount(String accountNumber, double initialBalance, String ownerName, String password) throws NoSuchAlgorithmException {
// ...其他初始化...
this.password = password;
this.hashedPassword = hashPassword(password);
}
// 加密密码
private String hashPassword(String password) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256"); // 使用SHA-256进行哈希
byte[] messageDigest = md.digest(password.getBytes());
return Base64.getEncoder().encodeToString(messageDigest); // 将字节转换成Base64字符串
}
// 设置新密码并更新哈希值
public void setPassword(String newPassword) throws NoSuchAlgorithmException {
this.password = newPassword;
this.hashedPassword = hashPassword(newPassword);
}
// 验证密码(这里仅做简单示例,实际应用应更复杂)
public boolean validatePassword(String inputPassword) throws NoSuchAlgorithmException {
return hashPassword(inputPassword).equals(hashedPassword);
}
// 修改密码方法
public void changePassword(String oldPassword, String newPassword) throws NoSuchAlgorithmException {
if (validatePassword(oldPassword)) { // 验证旧密码是否正确
this.setPassword(newPassword); // 更改密码
System.out.println("密码已成功更改为: " + newPassword);
} else {
throw new IllegalArgumentException("旧密码验证失败.");
}
}
// ...其他方法...
}
```
现在你可以通过`changePassword`方法来修改账户密码,先输入旧密码进行验证,然后输入新密码。记得在实际应用中要使用更强大的密码策略和安全措施。
阅读全文