javacryptographybouncycastlepbkdf2

Reliable implementation of PBKDF2-HMAC-SHA256 for JAVA


UPDATED 2019: Bouncycastle now support PBKDF2-HMAC-SHA256 since bouncycastle 1.60


Is there any reliable implementation of PBKDF2-HMAC-SHA256 for JAVA?

I used to encrypt using bouncycastle but it does not provide PBKDF2WithHmacSHA256'.

I do not want to write crypto module by myself.

Could you recommend any alternative library or algorithm (if i can stick with bouncycastle)

(here are the algorithms that bouncycastle supports) http://www.bouncycastle.org/specifications.html


Solution

  • Using BouncyCastle classes directly:

    PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(new SHA256Digest());
    gen.init("password".getBytes("UTF-8"), "salt".getBytes(), 4096);
    byte[] dk = ((KeyParameter) gen.generateDerivedParameters(256)).getKey();