Module one.jpro.platform.auth.core
Class BCryptPasswordEncoder
java.lang.Object
one.jpro.platform.auth.core.crypto.bcrypt.BCryptPasswordEncoder
- All Implemented Interfaces:
PasswordEncoder
Implementation of PasswordEncoder that uses the BCrypt strong hashing function. Clients
can optionally supply a "version" ($2a, $2b, $2y) and a "strength" (a.k.a. log rounds
in BCrypt) and a SecureRandom instance. The larger the strength parameter the more work
will have to be done (exponentially) to hash the passwords. The default value is 10.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor which uses a default strength.BCryptPasswordEncoder(int strength) Constructor with strength.BCryptPasswordEncoder(int strength, SecureRandom random) Constructor with strength and a SecureRandom instance.BCryptPasswordEncoder(BCrypt.Version version) Constructor with a specific version of BCrypt.BCryptPasswordEncoder(BCrypt.Version version, int strength) Constructor with a specific version of BCrypt and strength.BCryptPasswordEncoder(BCrypt.Version version, int strength, SecureRandom random) Constructor with a specific version of BCrypt, strength, and a SecureRandom instance.BCryptPasswordEncoder(BCrypt.Version version, SecureRandom random) Constructor with a specific version of BCrypt and a SecureRandom instance. -
Method Summary
Modifier and TypeMethodDescriptionencode(CharSequence rawPassword) Encode the raw password.booleanmatches(CharSequence rawPassword, String encodedPassword) Verify the encoded password obtained from storage matches the submitted raw password after it too is encoded.booleanupgradeEncoding(String encodedPassword) Returns true if the encoded password should be encoded again for better security, else false.
-
Constructor Details
-
BCryptPasswordEncoder
public BCryptPasswordEncoder()Default constructor which uses a default strength. -
BCryptPasswordEncoder
public BCryptPasswordEncoder(int strength) Constructor with strength. It sets the log rounds for hashing.- Parameters:
strength- the log rounds to use, between 4 and 31
-
BCryptPasswordEncoder
Constructor with a specific version of BCrypt.- Parameters:
version- the version of bcrypt, can be 2a, 2b, 2y
-
BCryptPasswordEncoder
Constructor with a specific version of BCrypt and a SecureRandom instance.- Parameters:
version- the version of bcrypt, can be 2a, 2b, 2yrandom- the secure random instance to use
-
BCryptPasswordEncoder
Constructor with strength and a SecureRandom instance.- Parameters:
strength- the log rounds to use, between 4 and 31random- the secure random instance to use
-
BCryptPasswordEncoder
Constructor with a specific version of BCrypt and strength.- Parameters:
version- the version of bcrypt, can be 2a, 2b, 2ystrength- the log rounds to use, between 4 and 31
-
BCryptPasswordEncoder
Constructor with a specific version of BCrypt, strength, and a SecureRandom instance.- Parameters:
version- the version of bcrypt, can be 2a, 2b, 2ystrength- the log rounds to use, between 4 and 31random- the secure random instance to use
-
-
Method Details
-
encode
Description copied from interface:PasswordEncoderEncode the raw password. Generally, a good encoding algorithm applies an SHA-1 or greater hash combined with an 8-byte or greater randomly generated salt.- Specified by:
encodein interfacePasswordEncoder- Parameters:
rawPassword- the raw password to encode- Returns:
- encoded password string
-
matches
Description copied from interface:PasswordEncoderVerify the encoded password obtained from storage matches the submitted raw password after it too is encoded. Returns true if the passwords match, false if they do not. The stored password itself is never decoded.- Specified by:
matchesin interfacePasswordEncoder- Parameters:
rawPassword- the raw password to encode and matchencodedPassword- the encoded password from storage to compare with- Returns:
- true if the raw password, after encoding, matches the encoded password from storage
-
upgradeEncoding
Description copied from interface:PasswordEncoderReturns true if the encoded password should be encoded again for better security, else false. The default implementation always returns false.- Specified by:
upgradeEncodingin interfacePasswordEncoder- Parameters:
encodedPassword- the encoded password to check- Returns:
- true if the encoded password should be encoded again for better security, else false.
-