KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to securely store a password in a database and for that I chose to store its hash generated using the PBKDF2 function. I want to do this using the bouncy castle library but I don't know why I cannot get it to work by using the JCE interface... The problem is that generating the hash in 3 different modes: 1. using the PBKDF2WithHmacSHA1 secret key factory provided by sun 2. using the bouncy castle api directly 3. using the bouncy castle through JCE results in 2 distinct values: one common to the first two and one for the third. Here is my code: //Mode 1 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec keyspec = new PBEKeySpec("password".toCharArray(), salt, 1000, 128); Key key = factory.generateSecret(keyspec); System.out.println(key.getClass().getName()); System.out.println(Arrays.toString(key.getEncoded())); //Mode 2 PBEParametersGenerator generator = new PKCS5S2ParametersGenerator(); generator.init(PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(("password").toCharArray()), salt, 1000); KeyParameter params = (KeyParameter)generator.generateDerivedParameters(128); System.out.println(Arrays.toString(params.getKey())); //Mode 3 SecretKeyFactory factorybc = SecretKeyFactory.getInstance("PBEWITHHMACSHA1", "BC"); KeySpec keyspecbc = new PBEKeySpec("password".toCharArray(), salt, 1000, 128); Key keybc = factorybc.generateSecret(keyspecbc); System.out.println(keybc.getClass().getName()); System.out.println(Arrays.toString(keybc.getEncoded())); System.out.println(keybc.getAlgorithm()); I know that PBKDF2 is implemented using HMAC SHA1 so that is why i chose as algorithm in the last method the "PBEWITHHMACSHA1" which i took from the bouncy castle java docs. The output is the following: com.sun.crypto.provider.SunJCE_ae [-53, 29, 113, -110, -25, 76, 115, -127,
Tags (comma-separated)
Save Edits
Cancel