Package org.apache.commons.codec.digest
Class Sha2Crypt
java.lang.Object
org.apache.commons.codec.digest.Sha2Crypt
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.
- Since:
- 1.7
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic String
sha256Crypt
(byte[] keyBytes) Generates a libc crypt() compatible "$5$" hash value with random salt.static String
sha256Crypt
(byte[] keyBytes, String salt) Generates a libc6 crypt() compatible "$5$" hash value.static String
sha256Crypt
(byte[] keyBytes, String salt, Random random) Generates a libc6 crypt() compatible "$5$" hash value.static String
sha512Crypt
(byte[] keyBytes) Generates a libc crypt() compatible "$6$" hash value with random salt.static String
sha512Crypt
(byte[] keyBytes, String salt) Generates a libc6 crypt() compatible "$6$" hash value.static String
sha512Crypt
(byte[] keyBytes, String salt, Random random) Generates a libc6 crypt() compatible "$6$" hash value.
-
Constructor Details
-
Sha2Crypt
public Sha2Crypt()
-
-
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 to0
before returning.- Returns:
- complete hash value
- Throws:
IllegalArgumentException
- when aNoSuchAlgorithmException
is 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 to0
before 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 ownRandom
insha256Crypt(byte[], String, Random)
.- Returns:
- complete hash value including salt
- Throws:
IllegalArgumentException
- if the salt does not match the allowed patternIllegalArgumentException
- when aNoSuchAlgorithmException
is 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 to0
before returning.salt
- real salt value without prefix or "rounds=".random
- the instance ofRandom
to use for generating the salt. Consider usingSecureRandom
for more secure salts.- Returns:
- complete hash value including salt
- Throws:
IllegalArgumentException
- if the salt does not match the allowed patternIllegalArgumentException
- when aNoSuchAlgorithmException
is 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 to0
before returning.- Returns:
- complete hash value
- Throws:
IllegalArgumentException
- when aNoSuchAlgorithmException
is 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 to0
before 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 aRandom
object other thanSecureRandom
then we suggest you provide it usingsha512Crypt(byte[], String, Random)
.- Returns:
- complete hash value including salt
- Throws:
IllegalArgumentException
- if the salt does not match the allowed patternIllegalArgumentException
- when aNoSuchAlgorithmException
is 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 to0
before 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 ofRandom
to use for generating the salt. Consider usingSecureRandom
for more secure salts.- Returns:
- complete hash value including salt
- Throws:
IllegalArgumentException
- if the salt does not match the allowed patternIllegalArgumentException
- when aNoSuchAlgorithmException
is caught.- Since:
- 1.12
-