Nous Hashage un mot de passe en utilisant l'algorithme de PBKDF2, en utilisant la fonction SecretKeyFactory.generateSecret
, comme ceci:SecretKeyFactory.generateSecret meurt avec InvalidKeySpecException sur IBM Java
final SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(algorithm);
final PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, iterations, hashLength);
final SecretKey secretKey = secretKeyFactory.generateSecret(keySpec);
return secretKey.getEncoded();
Tout semble fonctionner très bien, cependant, sur le serveur de production, quand il est en cours d'exécution dans IBM Java, il meurt avec java.security.spec.InvalidKeySpecException
: Impossible de générer la clé secrète:
Caused by: java.security.spec.InvalidKeySpecException: Could not generate secret key
at javax.crypto.SecretKeyFactory.generateSecret(Unknown Source)
at our.Implementation.doHash(Hasher.java:71)
... 48 more
Caused by: java.lang.RuntimeException: Error deriving PBKDF2 keys
at com.ibm.crypto.provider.PBKDF2KeyImpl.a(Unknown Source)
at com.ibm.crypto.provider.PBKDF2KeyImpl.<init>(Unknown Source)
at com.ibm.crypto.provider.PBKDF2HmacSHA1Factory.engineGenerateSecret(Unknown Source)
... 50 more
Nous avons essayé de changer le nombre d'itérations, la taille de hachage généré et t il taille de sel, mais rien n'a aidé. Qu'est-ce que je fais mal?