Class UnixCrypt


  • public class UnixCrypt
    extends java.lang.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
      UnixCrypt()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String crypt​(byte[] original)
      Generates a crypt(3) compatible hash using the DES algorithm.
      static java.lang.String crypt​(byte[] original, java.lang.String salt)
      Generates a crypt(3) compatible hash using the DES algorithm.
      static java.lang.String crypt​(java.lang.String original)
      Generates a crypt(3) compatible hash using the DES algorithm.
      static java.lang.String crypt​(java.lang.String original, java.lang.String salt)
      Generates a crypt(3) compatible hash using the DES algorithm.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • UnixCrypt

        public UnixCrypt()
    • Method Detail

      • crypt

        public static java.lang.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 java.lang.String crypt​(byte[] original,
                                             java.lang.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:
        java.lang.IllegalArgumentException - if the salt does not match the allowed pattern
      • crypt

        public static java.lang.String crypt​(java.lang.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 java.lang.String crypt​(java.lang.String original,
                                             java.lang.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:
        java.lang.IllegalArgumentException - if the salt does not match the allowed pattern