1.8.4 - (2025-06-30)
- Daemon Threads belonging to the parallelization pool are now shutdown during JVM shutdown in order to prevent memory leaks (#163)
1.8.3 - (2025-05-08)
- Threads belonging to the parallelization pool are now shutdown during JVM shutdown in order to prevent memory leaks (#162)
1.8.2 - (2024-05-01)
- Multi thread algorithms use daemon threads in order to not block the application shutdown if there is no explicit
System.exit()(#151) - Password4j works even when there is no access to
psw4j.propertiesfile due to restrictive security policies (#153)
1.8.1 - (2024-03-08)
Argon2Function#internalHash(...)used a double conversion frombyte[]toStringand back tobyte[]that created inconsistencies in `Hash#salt (#143)
Hash#Hash(HashingFunction, String, byte[], String)marked deprecated
1.8.0 - (2024-03-03)
- Balloon Hashing implementation (#131)
- Parallelism is achieved by an
ExecutorServiceinstantiated during object creation instead of during the hashing process
- Banner is disabled by default
1.7.3 - (2023-09-14)
- Wrong hashes when the password contains non ISO 8859-1 characters (#126)
1.7.2 - (2023-08-20)
- Suppressed warning for usage of
java.security.AccessController. This is how the java development team fixed the problem for the moment (#119) - In some custom JDK implementations
java.security.Provider#getServices()can returnnullinstead of emptyjava.security.Provider.Service[](#120)
1.7.1 - (2023-06-02)
- Bcrypt used negative rounds when cost factor = 31 (#114)
1.7.0 - (2023-02-18)
- APIs now accepts
byte[]arguments (#99) .forceUpdate()forces Password4j to recalculate a new hash even if the parameters didn't change (#102)- configurable salt length with property
global.salt.lengthwhen using#addRandomSalt()(#97)
.andUpdate()no more recalculations of the hash if the algorithm, salt or pepper changed from the hash found inPassword.check()(#102)
- Inconsistency between public and internal APIs for Argon2 (#93)
1.6.3 - (2022-12-08)
- Inconsistency of Argon2 with some kind of salts generated from external libraries #92
1.6.2 - (2022-10-20)
- Application banner (#83).
- Typo for issue #80
- Dependencies to Apache Commons Text, which had been vulnerable to arbitrary code execution in the past (#84).
1.6.1 - (2022-10-07)
- Algorithms' default values are aligned to OWASP recommendation (#80)
1.6.0 - (2022-06-17)
BCryptFunction,SCryptFunction,#withBCrypt(),#withSCrypt(),getBCryptInstance(),getSCryptInstance()toBcryptFunction,ScryptFunction,#withBcrypt(),#withScrypt(),getBcryptInstance(),getScryptInstance()(#36).
- Scrypt never prepends
$s0to the result (#64).
1.5.4 - (2021-11-19)
- Removed
slf4j-nopwhich can cause issues if not excluded from the dependency tree (#46)
1.5.3 - (2021-04-14)
1.5.2 - (2021-02-21)
- Raised the compatibility with Android API level from 26+ (Android 8.0) to 21+ (Android 5.0).
SystemChecker's benchmark tools returns a prototype of the function and the real elapsed time (#23).
- Argon2 was not using the given pepper with
Password.check(String, Hash). - Salt was converted from
Stringtobyte[]too many times. (#31).
- Dependency with Apache Commons Text.
1.5.1 - (2021-02-05)
Hashstores the byte array containing the calculated hash without algorithm's parameters and salt (#26).
- Scrypt accepts dynamic key length (#24).
- Improved
toString()methods' readability.
1.5.0 - (2021-02-02)
- Argon2 support.
- Enums
BCryptandHmacare moved fromcom.password4jtocom.password4j.types.
- Some typos along the code.
1.4.0 - (2020-11-15)
- CHFs like MD5, SHA-1, SHA-2 and SHA-3 in order to increase compatibility with legacy systems.
PBKDF2Function.getAlgorithm()returns aStringinstead of anHmacenum. This makePBKDF2Function.toString()andCompressedPBKDF2Function.toString()more readable.SystemChecker.isPBKDF2Supported()accepts aStringinstead of anHmacenum.
- Some typos along the code.
1.3.2 - (2020-09-09)
- The location of the configuration file is now customizable (#5).
SecureString.toString()now hides the length of the string (#6).
1.3.1 - (2020-03-25)
toString()of someHashingFunctionproduced non-unique output (#3).- added missing getters for some
HashingFunctions (#4).
1.3.0 - (2020-03-19)
- Capability of updating the hash (re-hash) with a new configuration just after the verification process.
HashBuilderandHashCheckerare less extendable because there are more maintainability issues than effective advantages- Pepper can be provided either with
SecureStringorString.
Password.hash()andPassword.check()methods that accepts a customHashBuilderor a customHashChecker.
1.2.1 - (2020-03-17)
- Constant time equality in
SecureString.
- Enum
WithHmacrenamed toHmac.
1.2.0 - (2020-03-15)
- This CHANGELOG.md file.
- Plain text passwords can be provided either with
SecureStringorString.
1.1.0 - (2020-03-14)
- Configurable delimiter for
CompressedPBKDF2Function(before was$).
Hash.check()method becausePassword.check()should be the only way to verify passwords.
- Values from
psw4j.propertiesare not properly cached. - Typos in README.md
- Typos in
SystemChecker's methods' signature.
1.0.2 - (2020-03-12)
SystemChecker.javahas no more amainmethod but must be called from end user's code. Removed UI and execution from Maven profile.
1.0.1 - (2020-03-11)
- POM structure and dependencies.
1.0.0 - (2020-03-11)
- API are more readable for end users.