Class Sha2Crypt
- java.lang.Object
-
- org.apache.commons.codec.digest.Sha2Crypt
-
public class Sha2Crypt extends java.lang.Object
SHA2-based Unix crypt implementation.Based on the C implementation released into the Public Domain by Ulrich Drepper <drepper@redhat.com> http://www.akkadia.org/drepper/SHA-crypt.txt
Conversion to Kotlin and from there to Java in 2012 by Christian Hammers <ch@lathspell.de> and likewise put into the Public Domain.
This class is immutable and thread-safe.
SHA-crypt hashing has a quadratic input-length step. To bound CPU and memory consumption when plaintext is supplied by an untrusted caller, plaintext is limited to 4096 bytes by default. The limit can be changed with the
org.apache.commons.codec.digest.Sha2Crypt.keyMaxsystem property; this property is intended for trusted JVM configuration only.- Since:
- 1.7
-
-
Constructor Summary
Constructors Constructor Description Sha2Crypt()Deprecated.Will be private in the next major version.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.Stringsha256Crypt(byte[] keyBytes)Generates a libc crypt() compatible "$5$" hash value with random salt.static java.lang.Stringsha256Crypt(byte[] keyBytes, java.lang.String salt)Generates a libc6 crypt() compatible "$5$" hash value.static java.lang.Stringsha256Crypt(byte[] keyBytes, java.lang.String salt, java.util.Random random)Generates a libc6 crypt() compatible "$5$" hash value.static java.lang.Stringsha512Crypt(byte[] keyBytes)Generates a libc crypt() compatible "$6$" hash value with random salt.static java.lang.Stringsha512Crypt(byte[] keyBytes, java.lang.String salt)Generates a libc6 crypt() compatible "$6$" hash value.static java.lang.Stringsha512Crypt(byte[] keyBytes, java.lang.String salt, java.util.Random random)Generates a libc6 crypt() compatible "$6$" hash value.
-
-
-
Constructor Detail
-
Sha2Crypt
@Deprecated public Sha2Crypt()
Deprecated.Will be private in the next major version.Consider private.
-
-
Method Detail
-
sha256Crypt
public static java.lang.String sha256Crypt(byte[] keyBytes)
Generates a libc crypt() compatible "$5$" hash value with random salt.See
Crypt.crypt(String, String)for details.A salt is generated for you using
SecureRandom.- Parameters:
keyBytes- Plaintext to hash. Each array element is set to0before returning.- Returns:
- The Complete hash value.
- Throws:
java.lang.IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthjava.lang.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha256Crypt
public static java.lang.String sha256Crypt(byte[] keyBytes, java.lang.String salt)
Generates a libc6 crypt() compatible "$5$" hash value.See
Crypt.crypt(String, String)for details.- Parameters:
keyBytes- Plaintext to hash. Each array element is set to0before returning.salt- real salt value without prefix or "rounds=". The salt may be null, in which case a salt is generated for you usingSecureRandom. If one does not want to useSecureRandom, you can pass your ownRandominsha256Crypt(byte[], String, Random).- Returns:
- The Complete hash value including salt.
- Throws:
java.lang.IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthjava.lang.IllegalArgumentException- Thrown if the salt does not match the allowed pattern.java.lang.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha256Crypt
public static java.lang.String sha256Crypt(byte[] keyBytes, java.lang.String salt, java.util.Random random)
Generates a libc6 crypt() compatible "$5$" hash value.See
Crypt.crypt(String, String)for details.- Parameters:
keyBytes- plaintext to hash. Each array element is set to0before returning.salt- real salt value without prefix or "rounds=".random- The instance ofRandomto use for generating the salt. Consider usingSecureRandomfor more secure salts.- Returns:
- The Complete hash value including salt.
- Throws:
java.lang.IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthjava.lang.IllegalArgumentException- Thrown if the salt does not match the allowed pattern.java.lang.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.- Since:
- 1.12
-
sha512Crypt
public static java.lang.String sha512Crypt(byte[] keyBytes)
Generates a libc crypt() compatible "$6$" hash value with random salt.See
Crypt.crypt(String, String)for details.A salt is generated for you using
SecureRandom.- Parameters:
keyBytes- Plaintext to hash. Each array element is set to0before returning.- Returns:
- Complete hash value.
- Throws:
java.lang.IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthjava.lang.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha512Crypt
public static java.lang.String sha512Crypt(byte[] keyBytes, java.lang.String salt)
Generates a libc6 crypt() compatible "$6$" hash value.See
Crypt.crypt(String, String)for details.- Parameters:
keyBytes- Plaintext to hash. Each array element is set to0before returning.salt- Real salt value without prefix or "rounds=". The salt may be null, in which case a salt is generated for you usingSecureRandom; if you want to use aRandomobject other thanSecureRandomthen we suggest you provide it usingsha512Crypt(byte[], String, Random).- Returns:
- Complete hash value including salt.
- Throws:
java.lang.IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthjava.lang.IllegalArgumentException- Thrown if the salt does not match the allowed pattern.java.lang.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha512Crypt
public static java.lang.String sha512Crypt(byte[] keyBytes, java.lang.String salt, java.util.Random random)
Generates a libc6 crypt() compatible "$6$" hash value.See
Crypt.crypt(String, String)for details.- Parameters:
keyBytes- Plaintext to hash. Each array element is set to0before returning.salt- Real salt value without prefix or "rounds=". The salt may be null, in which case a salt is generated for you usingSecureRandom.random- The instance ofRandomto use for generating the salt. Consider usingSecureRandomfor more secure salts.- Returns:
- Complete hash value including salt.
- Throws:
java.lang.IllegalArgumentException- Thrown if the salt does not match the allowed pattern.java.lang.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.- Since:
- 1.12
-
-