PBKDF2WithHmacSHA512 Vs. PBKDF2WithHmacSHA1

Je suis en train de travailler sur un projet Java sous-système d'authentification que les spécifications de stockage de mots de passe dans la base de données comme PBKDF2généré par de la cendre, et je suis maintenant en train de décider si je dois utiliser la SHA1 ou SHA512 comme PFR. Je suis allé à travers les spécifications des deux, mais ils sont très mathématiquement intensif pour moi de suivre. Quelqu'un peut-il avec une meilleure crypto-compréhension expliquer comment PBKDF2WithHmacSHA512 diffère de PBKDF2WithHmacSHA1?

Voici ce que j'essaie de faire:

private static final int HASH_BYTE_SIZE = 64; //512 bits
private static final int PBKDF2_ITERATIONS = 1000;      

//generate random salt
SecureRandom random = new SecureRandom();
byte salt[] = new byte[SALT_BYTE_SIZE]; //use salt size at least as long as hash
random.nextBytes(salt);

//generate Hash
PBEKeySpec spec = new PBEKeySpec(password, salt, PBKDF2_ITERATIONS, HASH_BYTE_SIZE);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); //we would like this to be "PBKDF2WithHmacSHA512" instead? What Provider implements it?
byte[] hash = skf.generateSecret(spec).getEncoded();

//convert hash and salt to hex and store in DB as CHAR(64)...

OriginalL'auteur DTs | 2013-10-13