UnixCrypt (Encode/Decode Utilities (Version 1.10))
Date: 2016-03-08

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
  Version:
    $Id: UnixCrypt.java 1429868 2013-01-07 16:08:05Z ggregory $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static int[]` | `CON_SALT`
    `private static int[]` | `COV2CHAR`
    `private static char[]` | `SALT_CHARS`
    `private static boolean[]` | `SHIFT2`
    `private static int[][]` | `SKB`
    `private static int[][]` | `SPTRANS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `UnixCrypt()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private static int[]` | `body(int[] schedule, int eSwap0, int eSwap1)`
    `private static int` | `byteToUnsigned(byte b)`
    `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.
    `private static int` | `dEncrypt(int el, int r, int s, int e0, int e1, int[] sArr)`
    `private static int[]` | `desSetKey(byte[] key)`
    `private static int` | `fourBytesToInt(byte[] b, int offset)`
    `private static int` | `hPermOp(int a, int n, int m)`
    `private static void` | `intToFourBytes(int iValue, byte[] b, int offset)`
    `private static void` | `permOp(int a, int b, int n, int m, int[] results)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### CON_SALT

          private static final int[] CON_SALT

    - #### COV2CHAR

          private static final int[] COV2CHAR

    - #### SALT_CHARS

          private static final char[] SALT_CHARS

    - #### SHIFT2

          private static final boolean[] SHIFT2

    - #### SKB

          private static final int[][] SKB

    - #### SPTRANS

          private static final int[][] SPTRANS

  - ### Constructor Detail

    - #### UnixCrypt

          public UnixCrypt()

  - ### Method Detail

    - #### crypt

          public static String crypt(byte[] original)

      Generates a crypt(3) compatible hash using the DES algorithm.

      As no salt is given, a random one will be used.

      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./] or null for a random one
      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.

      As no salt is given, a random one is used.

      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./] or null for a random one
      Returns:
        a 13 character string starting with the salt string
      Throws:
        `IllegalArgumentException` - if the salt does not match the allowed pattern

    - #### body

          private static int[] body(int[] schedule,
                   int eSwap0,
                   int eSwap1)

    - #### byteToUnsigned

          private static int byteToUnsigned(byte b)

    - #### dEncrypt

          private static int dEncrypt(int el,
                     int r,
                     int s,
                     int e0,
                     int e1,
                     int[] sArr)

    - #### desSetKey

          private static int[] desSetKey(byte[] key)

    - #### fourBytesToInt

          private static int fourBytesToInt(byte[] b,
                           int offset)

    - #### hPermOp

          private static int hPermOp(int a,
                    int n,
                    int m)

    - #### intToFourBytes

          private static void intToFourBytes(int iValue,
                            byte[] b,
                            int offset)

    - #### permOp

          private static void permOp(int a,
                    int b,
                    int n,
                    int m,
                    int[] results)

commons-codec version 1.10 - Copyright © 2002-2016 - Apache Software Foundation