Class Sha2Crypt
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.keyMax system property; this property is intended for trusted JVM
configuration only.
- Since:
- 1.7
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Stringsha256Crypt(byte[] keyBytes) Generates a libc crypt() compatible "$5$" hash value with random salt.static Stringsha256Crypt(byte[] keyBytes, String salt) Generates a libc6 crypt() compatible "$5$" hash value.static Stringsha256Crypt(byte[] keyBytes, String salt, Random random) Generates a libc6 crypt() compatible "$5$" hash value.static Stringsha512Crypt(byte[] keyBytes) Generates a libc crypt() compatible "$6$" hash value with random salt.static Stringsha512Crypt(byte[] keyBytes, String salt) Generates a libc6 crypt() compatible "$6$" hash value.static Stringsha512Crypt(byte[] keyBytes, String salt, Random random) Generates a libc6 crypt() compatible "$6$" hash value.
-
Constructor Details
-
Sha2Crypt
Deprecated.Will be private in the next major version.Consider private.
-
-
Method Details
-
sha256Crypt
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:
IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthIllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha256Crypt
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:
IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthIllegalArgumentException- Thrown if the salt does not match the allowed pattern.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha256Crypt
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:
IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthIllegalArgumentException- Thrown if the salt does not match the allowed pattern.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.- Since:
- 1.12
-
sha512Crypt
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:
IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthIllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha512Crypt
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:
IllegalArgumentException- Thrown ifkeyBytesexceeds the configured maximum lengthIllegalArgumentException- Thrown if the salt does not match the allowed pattern.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.
-
sha512Crypt
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:
IllegalArgumentException- Thrown if the salt does not match the allowed pattern.IllegalArgumentException- Thrown if aNoSuchAlgorithmExceptionis caught.- Since:
- 1.12
-