Class PasswordUtil


  • public final class PasswordUtil
    extends java.lang.Object
    Utility to generate and compare password hashes.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String buildPasswordHash​(@NotNull java.lang.String password)
      Generates a hash of the specified password with the default values for algorithm, salt-size and number of iterations.
      static java.lang.String buildPasswordHash​(@NotNull java.lang.String password, @NotNull ConfigurationParameters config)
      Same as buildPasswordHash(String, String, int, int) but retrieving the parameters for hash generation from the specified configuration.
      static java.lang.String buildPasswordHash​(@NotNull java.lang.String password, @Nullable java.lang.String algorithm, int saltSize, int iterations)
      Generates a hash of the specified password using the specified algorithm, salt size and number of iterations into account.
      static boolean isPlainTextPassword​(@Nullable java.lang.String password)
      Returns true if the specified string doesn't start with a valid algorithm name in curly brackets.
      static boolean isSame​(@Nullable java.lang.String hashedPassword, @org.jetbrains.annotations.NotNull char[] password)
      Returns true if hash of the specified password equals the given hashed password.
      static boolean isSame​(@Nullable java.lang.String hashedPassword, @NotNull java.lang.String password)
      Returns true if hash of the specified password equals the given hashed password.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • buildPasswordHash

        public static java.lang.String buildPasswordHash​(@NotNull
                                                         @NotNull java.lang.String password)
                                                  throws java.security.NoSuchAlgorithmException,
                                                         java.io.UnsupportedEncodingException
        Generates a hash of the specified password with the default values for algorithm, salt-size and number of iterations.
        Parameters:
        password - The password to be hashed.
        Returns:
        The password hash.
        Throws:
        java.security.NoSuchAlgorithmException - If DEFAULT_ALGORITHM is not supported.
        java.io.UnsupportedEncodingException - If utf-8 is not supported.
      • buildPasswordHash

        public static java.lang.String buildPasswordHash​(@NotNull
                                                         @NotNull java.lang.String password,
                                                         @Nullable
                                                         @Nullable java.lang.String algorithm,
                                                         int saltSize,
                                                         int iterations)
                                                  throws java.security.NoSuchAlgorithmException,
                                                         java.io.UnsupportedEncodingException
        Generates a hash of the specified password using the specified algorithm, salt size and number of iterations into account.
        Parameters:
        password - The password to be hashed.
        algorithm - The desired hash algorithm. If the algorith is null the DEFAULT_ALGORITHM will be used.
        saltSize - The desired salt size. If the specified integer is lower that DEFAULT_SALT_SIZE the default is used.
        iterations - The desired number of iterations. If the specified integer is lower than 1 the default value is used.
        Returns:
        The password hash.
        Throws:
        java.security.NoSuchAlgorithmException - If the specified algorithm is not supported.
        java.io.UnsupportedEncodingException - If utf-8 is not supported.
      • buildPasswordHash

        public static java.lang.String buildPasswordHash​(@NotNull
                                                         @NotNull java.lang.String password,
                                                         @NotNull
                                                         @NotNull ConfigurationParameters config)
                                                  throws java.security.NoSuchAlgorithmException,
                                                         java.io.UnsupportedEncodingException
        Same as buildPasswordHash(String, String, int, int) but retrieving the parameters for hash generation from the specified configuration.
        Parameters:
        password - The password to be hashed.
        config - The configuration defining the details of the hash generation.
        Returns:
        The password hash.
        Throws:
        java.security.NoSuchAlgorithmException - If the specified algorithm is not supported.
        java.io.UnsupportedEncodingException - If utf-8 is not supported.
      • isPlainTextPassword

        public static boolean isPlainTextPassword​(@Nullable
                                                  @Nullable java.lang.String password)
        Returns true if the specified string doesn't start with a valid algorithm name in curly brackets.
        Parameters:
        password - The string to be tested.
        Returns:
        true if the specified string doesn't start with a valid algorithm name in curly brackets.
      • isSame

        public static boolean isSame​(@Nullable
                                     @Nullable java.lang.String hashedPassword,
                                     @NotNull
                                     @org.jetbrains.annotations.NotNull char[] password)
        Returns true if hash of the specified password equals the given hashed password.
        Parameters:
        hashedPassword - Password hash.
        password - The password to compare.
        Returns:
        If the hash created from the specified password equals the given hashedPassword string.
      • isSame

        public static boolean isSame​(@Nullable
                                     @Nullable java.lang.String hashedPassword,
                                     @NotNull
                                     @NotNull java.lang.String password)
        Returns true if hash of the specified password equals the given hashed password.
        Parameters:
        hashedPassword - Password hash.
        password - The password to compare.
        Returns:
        If the hash created from the specified password equals the given hashedPassword string.