org.apache.commons.codec.digest

## 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 and Description
    `UnixCrypt()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### UnixCrypt

          public UnixCrypt()

  - ### Method Detail

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

Copyright © 2002–2023 The Apache Software Foundation. All rights reserved.