public class BCryptHashBean extends Object implements HashBean<String>
HashBean
implementation that uses the bcrypt algorithm for hashing. Hash strings of the following
format are supported:
$2n$cost$xxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
where:
n is an optional bcrypt algorithm version (typically "a" or "b")
4 ≤ cost ≤ 31
x is 22 characters of encoded salt
y is 31 characters of encoded hash bytes
The encoding for salt and hash bytes is a variant of base-64 encoding without padding in the following alphabet:
./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Modifier and Type | Class and Description |
---|---|
static class |
BCryptHashBean.BCryptParameters
Handles encoding and decoding a bcrypt hash of the form
$2n$cost$xxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy . |
Constructor and Description |
---|
BCryptHashBean()
Creates a new instance.
|
BCryptHashBean(int costFactor)
Creates a new instance that uses the given cost factor when hashing.
|
Modifier and Type | Method and Description |
---|---|
boolean |
compare(String hash,
Object... data)
Compares a bcrypt hash of the form
$2n$cost$xxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
with the computed hash from the given password. |
String |
hash(Object... data)
Compute a bcrypt hash of the form
$2n$cost$xxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
given a salt and a password. |
void |
setCost(int costFactor)
Sets the bcrypt cost factor.
|
void |
setVersion(String ver)
Sets the bcrypt version.
|
public BCryptHashBean()
public BCryptHashBean(int costFactor)
costFactor
- BCrypt cost in the range [4, 31].public void setCost(int costFactor)
costFactor
- BCrypt cost in the range [4, 31].public void setVersion(String ver)
ver
- Bcrypt version, e.g. "2b"public String hash(Object... data) throws CryptoException
$2n$cost$xxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
given a salt and a password.hash
in interface HashBean<String>
data
- A 2-element array containing salt and password. The salt may be encoded per the bcrypt standard
or raw bytes.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
in the specification above.CryptoException
- on bcrypt algorithm errors.public boolean compare(String hash, Object... data) throws CryptoException, StreamException
$2n$cost$xxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
with the computed hash from the given password. The bcrypt algorithm parameters are derived from the reference
bcrypt hash string.compare
in interface HashBean<String>
data
- A 1-element array containing password.hash
- Known hash value.CryptoException
- on bcrypt algorithm errors.StreamException
- on stream IO errors.Copyright © 2003-2024 Virginia Tech. All Rights Reserved.