aurelbobol6
Messages postés36Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 4 février 2009
-
16 janv. 2008 à 12:27
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
17 janv. 2008 à 18:24
Bonjour, voila j'ai fais un petit programme pour copier deux fichiers. J'ai un fichier "original.exe" et je le crypte en "originalCrypte.exe", jusque la tout vas bien, la copie s'est bien déroulée.. mais lorsque je souhaite décrypter mon fichier "originalCrypte.exe" pour le copier à "originalNouveau.exe", j'ai un BadPaddingException qui se passe et je ne sais aps trop quoi faire.
J'ai fais quelques recherche a ce sujet et j'ai vu qu'il fallait utiliser il me semble cipher.getBlockSize() et cipher.getOutputSize(arg0) mais je n'ai pas tout compris.
Autre petit détail, mon fichier original fait 5,02Mo, le originalCrypte fait 5,06Mo et le fichier originalNouveau 5,10Mo.
Je vous ai laissé mon code, si quelqu'un peut m'aider, ce serait vraiment sympa et super arrangeant. Merci d'avance
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 janv. 2008 à 16:05
Salut,
je ne peux pas te donner le code, mais voici un lien qui devrait régler le problème : ICI Note : Il est préférable que tu utilises un algo plus évolué et surtout plus sécurisé que le DES qui est trop facilement decryptable ^^
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
aurelbobol6
Messages postés36Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 4 février 2009 16 janv. 2008 à 13:29
j'ai oublié une erreur de modification dans la méthode start:
lihne 51: input = cipherCrypt.doFinal(buffer.array());
est remplacé par
input = cipher.doFinal(buffer.array());
et donc voici mon erreur
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.BlowfishCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at TestClass.start(TestClass.java:51)
at TestClass.main(TestClass.java:31)
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 janv. 2008 à 15:13
Salut,
j'ai eu exactement le même problème que toi... la solution que j'ai trouvé consiste à mettre le même IV entre l'application qui code et celle qui décode le message...
au passage il est préférable de passer par du base64, afin d'éviter les problèmes d'encodage... surtout lorsque le message passe d'un PC ayant un encodage de caractères UTF-8 vers un PC ayant un encodage de caractères en ISO.
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
OoWORAoO
Vous n’avez pas trouvé la réponse que vous recherchez ?
aurelbobol6
Messages postés36Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 4 février 2009 16 janv. 2008 à 15:35
j'ai fait excatement comme toi (sauf base64) ... mais ca ne marche toujours pas! merci quand mm. J'ai même essayé avec ton code à toi (donc même constructeur, même méthode... et base 64).J'ai toujours le même problème avec ce code la:
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 janv. 2008 à 16:36
Salut,
bah pour commencer je me suis planté dans le choix de l'IV vu qu'il faut une taille de 8 bytes....
bref tu prends le code ci-dessus et tu change l'IV pour avoir 8 bytes
exemple :
ips = new IvParameterSpec("azertyui".getBytes());// préparation de l'IV
ensuite voici un ptit code d'exemple (qui fonctionne chez moi) pour utiliser la classe Des ci-dessus :
public class TestDes {
public static void main(String[] args) {
try {
Des des = new Des("ma secret key");
String source = "hello de javafr";
System.out.println(source);
String encoded = des.encode(source);
System.out.println(encoded);
String decoded = des.decode(encoded);
System.out.println(decoded);
} catch (Exception e) {
e.printStackTrace();
}
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 janv. 2008 à 13:40
Salut,
........ j'ai meme refait une code avec un fichier et ça fonctionne impec.... sauf que je n'utilise absolument pas ta technique pour lire et ecrire dans le fichier....
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
aurelbobol6
Messages postés36Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 4 février 2009 17 janv. 2008 à 13:42
tu utilise quelle technique? pck moi j'utilise celle ci car après je vais la mettre dans un socketchannel ... et mes fichiers sont de taille de 100Mo environ pour mon projet. merci en tout cas pour tes rép