| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 
 | package com.utils;import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.util.Base64;
 
 
 
 
 
 
 
 
 public class SaltedHash {
 
 
 public static String hashPassword(String password) {
 
 byte[] salt = generateSalt(16);
 
 MessageDigest md = null;
 try {
 md = MessageDigest.getInstance("SHA-256");
 } catch (NoSuchAlgorithmException e) {
 throw new RuntimeException(e);
 }
 md.update(salt);
 md.update(password.getBytes());
 byte[] hashedPassword = md.digest();
 
 
 return Base64.getEncoder().encodeToString(salt) + ":" + Base64.getEncoder().encodeToString(hashedPassword);
 }
 
 
 private static byte[] generateSalt(int length) {
 SecureRandom sr = new SecureRandom();
 byte[] salt = new byte[length];
 sr.nextBytes(salt);
 return salt;
 }
 
 
 public static boolean verifyPassword(String inputPassword, String storedSaltedHashedPassword) {
 
 String[] parts = storedSaltedHashedPassword.split(":");
 byte[] salt = Base64.getDecoder().decode(parts[0]);
 String storedHashedPassword = parts[1];
 
 
 String hashedInputPassword = null;
 hashedInputPassword = hashPasswordWithSalt(inputPassword, salt);
 
 
 return storedHashedPassword.equals(hashedInputPassword);
 }
 
 
 private static String hashPasswordWithSalt(String password, byte[] salt) {
 MessageDigest md = null;
 try {
 md = MessageDigest.getInstance("SHA-256");
 } catch (NoSuchAlgorithmException e) {
 throw new RuntimeException(e);
 }
 md.update(salt);
 md.update(password.getBytes());
 byte[] hashedPassword = md.digest();
 return Base64.getEncoder().encodeToString(hashedPassword);
 }
 
 public static void main(String[] args) {
 String password = "123456";
 
 
 String saltedHashedPassword = hashPassword(password);
 System.out.println("Salted Hashed Password: " + saltedHashedPassword);
 
 
 String passwordToVerify = "123456";
 boolean isPasswordValid = verifyPassword(passwordToVerify, saltedHashedPassword);
 System.out.println("Password verification: " + isPasswordValid);
 
 
 String wrongPassword = "wrongPassword";
 boolean isWrongPasswordValid = verifyPassword(wrongPassword, saltedHashedPassword);
 System.out.println("Wrong password verification: " + isWrongPasswordValid);
 
 }
 }
 
 
 
 
 |