Надежная реализация PBKDF2-HMAC-SHA256 для JAVA
Есть ли надежная реализация PBKDF2-HMAC-SHA256 для JAVA?
Я использовал для шифрования с помощью bouncycastle, но он не предоставляет PBKDF2WithHmacSHA256 '.
Я не хочу писать криптовый модуль самостоятельно.
Не могли бы вы порекомендовать любую альтернативную библиотеку или алгоритм (если я могу придерживаться bouncycastle)
(вот алгоритмы, которые поддерживает bouncycastle)
http://www.bouncycastle.org/specifications.html
Ответы
Ответ 1
Использование классов BouncyCastle напрямую:
PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(new SHA256Digest());
gen.init("password".getBytes("UTF-8"), "salt".getBytes(), 4096);
byte[] dk = ((KeyParameter) gen.generateDerivedParameters(256)).getKey();
Ответ 2
Он доступен на Java 8:
public static byte[] getEncryptedPassword(String password, byte[] salt, int iterations, int derivedKeyLength) throws NoSuchAlgorithmException, InvalidKeySpecException {
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterations, derivedKeyLength * 8);
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
return f.generateSecret(spec).getEncoded();
}