public static void main(String[] args) {
String password = "123";
// 生成随机盐值
byte[] salt = generateSalt();
// 通过盐值和密码进行哈希加密
byte[] hashedPassword = hashPassword(password, salt);
// 将盐值和哈希后的密码存储在数据库中
saveToDatabase(hashedPassword, salt);
// 验证密码
boolean isValid = verifyPassword(password, hashedPassword, salt);
System.out.println("密码验证结果: " + isValid);
}
private static byte[] generateSalt() {
SecureRandom random = new SecureRandom();
byte[] salt = new byte[16];
random.nextBytes(salt);
return salt;
}
private static byte[] hashPassword(String password, byte[] salt) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(salt);
byte[] hashedPassword = md.digest(password.getBytes());
return hashedPassword;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
private static void saveToDatabase(byte[] hashedPassword, byte[] salt) {
// 将哈希后的密码和盐值存储在数据库中
// 这里只是一个示例,实际应用中需要使用数据库操作来存储和检索数据
System.out.println("密码为:"+Arrays.toString(hashedPassword));
System.out.println("盐值为:"+Arrays.toString(salt));
}
private static boolean verifyPassword(String password, byte[] hashedPassword, byte[] salt) {
byte[] newHashedPassword = hashPassword(password, salt);
System.out.println("新密码为:"+ Arrays.toString(newHashedPassword));
return MessageDigest.isEqual(hashedPassword, newHashedPassword);
}
JAVA密码加盐加密处理
于 2023-10-30 17:31:38 首次发布