Bonjour à tous, je viens vers vous afin de solliciter une aide de votre part sur l'usage d'une class disponible sur ce site.

J'utilise la class PBEEncryptor pour encrypter un fichier avec un mot de passe, puis pour le décrypter.

Pour le cryptage cette class semble fonctionner sans problème, mais lors du décryptage je rencontre un problème voici le code utilisé et l'erreur rencontrée :

Pour le cryptage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
String mdp = "password";
char[] password = mdp.toCharArray();
 
SecretKey cle = PBEEncryptor.generateKey(password);
try {
PBEEncryptor cryptage = new PBEEncryptor(cle);
cryptage.encryptFile(compressFile, crypteFile);
} catch (InvalidKeyException e1) {
e1.printStackTrace();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
Pour le décryptage :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String mdp = "password";
char[] password = mdp.toCharArray();
 
SecretKey cle = PBEEncryptor.generateKey(password);
try {
PBEEncryptor decryptage = new PBEEncryptor(cle);
decryptage.decryptFile(crypteFile,compressFile);
 
} catch (InvalidKeyException e1) {
e1.printStackTrace();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
L'erreur rencontrée au décryptage est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.SunJCE_ab.b(DashoA13*..)
    at com.sun.crypto.provider.PBEWithMD5AndDESCipher.engineDoFinal(DashoA13*..)
    at javax.crypto.Cipher.doFinal(DashoA13*..)
    at org.cosmopol.crypto.CipherEncryptor.crypt(CipherEncryptor.java:70)
    at org.cosmopol.crypto.PBEEncryptor.decryptStream(PBEEncryptor.java:351)
    at org.cosmopol.crypto.StreamEncryptor.decryptFile(StreamEncryptor.java:100)
    at org.test.Application$1.actionPerformed(Application.java:323)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

Mon fichier pèse 1 754 Ko ( environ )

Ps : pour le mot de passe la c'est pour le test cela va de soit
Merci à vous