package com.example.fp; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.List; import com.example.fp.dao.UserDAO; public class UserManagerImpl implements UserManager { private UserDAO userDAO; public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } @Override public void create(User user) { user.setPassword(calculatePasswordHash(user.getPassword())); userDAO.create(user); } @Override public User find(int uid) { return userDAO.find(uid); } @Override public List findAll() { return userDAO.findAll(); } @Override public void delete(int uid) { userDAO.delete(uid); } @Override public void update(User user) { userDAO.update(user); } @Override public void setPassword(int uid, String plainTextPassword) { User user = userDAO.find(uid); user.setPassword(calculatePasswordHash(plainTextPassword)); userDAO.update(user); } public static String calculatePasswordHash(String plainText) { try { // Static getInstance method is called with hashing MD5 MessageDigest md = MessageDigest.getInstance("MD5"); // digest() method is called to calculate message digest // of an input digest() return array of byte byte[] messageDigest = md.digest(plainText.getBytes()); // Convert byte array into signum representation BigInteger no = new BigInteger(1, messageDigest); // Convert message digest into hex value String hashtext = no.toString(16); while (hashtext.length() < 32) { hashtext = "0" + hashtext; } return hashtext; } catch (NoSuchAlgorithmException e) { // For specifying wrong message digest algorithms throw new RuntimeException(e); } } }