14

Is there PBKDF2 implementation for Android. I am trying to derive a key using PBKDF2 function. I couldn't find an example to do so.

ssk
  • 9,045
  • 26
  • 96
  • 169

2 Answers2

17

Late to the party, but a lot of Android devices DO include PBKDF2 with the standard SecretKeyFactory. However, a lot of people recommend using something like Spongycastle to guarantee that you'll have that algorithm available.

It does throw an exception if it can't find one

    SecretKeyFactory keyFactory = null;
    try
    {
        keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    } 
    catch (NoSuchAlgorithmException e)
Joe Plante
  • 6,308
  • 2
  • 30
  • 23
  • 6
    The following article includes an example method for the usage of SecretKeyFactory's PBKDF: http://android-developers.blogspot.de/2013/02/using-cryptography-to-store-credentials.html (see section "Even more security"). – user1364368 May 17 '14 at 09:19
  • 5
    Works for Android API 10+, as documented at https://developer.android.com/reference/javax/crypto/SecretKeyFactory.html for anyone that wonders – Warrick Mar 01 '17 at 07:16
12

Free options would be:

IF a commercial component is an option see for example http://www.chilkatsoft.com/java-encryption.asp (sample code http://www.example-code.com/android/crypt2_pbkdf2.asp).

Another option is to use javax.crypto and implement it yourself although I wouldn't recommend that...

Yahia
  • 69,653
  • 9
  • 115
  • 144