code: public String hashAndHexPassword(final String password, final String salt,
  		final HashAlgorithm hashAlgorithm, final Charset charset)
  		throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException,
  		NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException,
  		InvalidKeySpecException, InvalidAlgorithmParameterException
  	{
  		final String hashedPassword = Hasher.hashAndHex(password, salt, hashAlgorithm, charset);
  		return hashedPassword;
  	}
docs: Hash and hex the given password with the given salt, hash algorithm and charset.
  
  @param password
  the password
  @param salt
  the salt
  @param hashAlgorithm
  the hash algorithm
  @param charset
  the charset
  @return the generated {@link String} object
  @throws NoSuchAlgorithmException
  is thrown if instantiation of the MessageDigest object fails.
  @throws UnsupportedEncodingException
  is thrown by get the byte array of the private key String object fails.
  @throws NoSuchPaddingException
  is thrown if instantiation of the cypher object fails.
  @throws InvalidKeyException
  the invalid key exception is thrown if initialization of the cypher object fails.
  @throws BadPaddingException
  is thrown if {@link Cipher#doFinal(byte[])} fails.
  @throws IllegalBlockSizeException
  is thrown if {@link Cipher#doFinal(byte[])} fails.
  @throws InvalidAlgorithmParameterException
  is thrown if initialization of the cypher object fails.
  @throws InvalidKeySpecException
  is thrown if generation of the SecretKey object fails.