Class UnixCrypt

java.lang.Object
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 Crypt.crypt() for a method that distinguishes between all the algorithms supported in the current glibc's crypt().

The initial 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

      Deprecated.
      TODO Make private in 2.0.
      TODO Make private in 2.0.
  • 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 SecureRandom.

      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 B64.getRandomSalt(int). Only the first two characters are used, others are ignored.
      Returns:
      A 13 character string starting with the salt string.
      Throws:
      IllegalArgumentException - Thrown 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 SecureRandom.

      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 SecureRandom.
      Returns:
      A 13 character string starting with the salt string.
      Throws:
      IllegalArgumentException - if the salt does not match the allowed pattern.