java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.codec.digest.UnixCrypt

public class UnixCrypt extends Object
Unix crypt(3) algorithm implementation.

This class only implements the traditional 56 bit DES based algorithm. Please use DigestUtils.crypt() for a method that distinguishes between all the algorithms supported in the current glibc's crypt().

The Java implementation was taken from the JetSpeed Portal project (see org.apache.jetspeed.services.security.ldap.UnixCrypt).

This class is slightly incompatible if the given salt contains characters that are not part of the allowed range [a-zA-Z0-9./].

This class is immutable and thread-safe.

Since:
1.7
  • Constructor Details

    • UnixCrypt

      public UnixCrypt()
  • Method Details

    • crypt

      public static String crypt(byte[] original)
      Generates a crypt(3) compatible hash using the DES algorithm.

      A salt is generated for you using ThreadLocalRandom; for more secure salts consider using SecureRandom to generate your own salts and calling crypt(byte[], String).

      Parameters:
      original - plaintext password
      Returns:
      a 13 character string starting with the salt string
    • crypt

      public static String crypt(byte[] original, String salt)
      Generates a crypt(3) compatible hash using the DES algorithm.

      Using unspecified characters as salt results incompatible hash values.

      Parameters:
      original - plaintext password
      salt - a two character string drawn from [a-zA-Z0-9./]. The salt may be null, in which case a salt is generated for you using ThreadLocalRandom; for more secure salts consider using SecureRandom to generate your own salts.
      Returns:
      a 13 character string starting with the salt string
      Throws:
      IllegalArgumentException - if the salt does not match the allowed pattern
    • crypt

      public static String crypt(String original)
      Generates a crypt(3) compatible hash using the DES algorithm.

      A salt is generated for you using ThreadLocalRandom; for more secure salts consider using SecureRandom to generate your own salts and calling crypt(String, String).

      Parameters:
      original - plaintext password
      Returns:
      a 13 character string starting with the salt string
    • crypt

      public static String crypt(String original, String salt)
      Generates a crypt(3) compatible hash using the DES algorithm.
      Parameters:
      original - plaintext password
      salt - a two character string drawn from [a-zA-Z0-9./]. The salt may be null, in which case a salt is generated for you using ThreadLocalRandom; for more secure salts consider using SecureRandom to generate your own salts.
      Returns:
      a 13 character string starting with the salt string
      Throws:
      IllegalArgumentException - if the salt does not match the allowed pattern