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 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 Summary

    Constructors
    Constructor
    Description
    Deprecated.
    TODO Make private in 2.0.
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    crypt(byte[] original)
    Generates a crypt(3) compatible hash using the DES algorithm.
    static String
    crypt(byte[] original, String salt)
    Generates a crypt(3) compatible hash using the DES algorithm.
    static String
    crypt(String original)
    Generates a crypt(3) compatible hash using the DES algorithm.
    static String
    crypt(String original, String salt)
    Generates a crypt(3) compatible hash using the DES algorithm.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 SecureRandom.
      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 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