babylone78
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention11 janvier 2011
-
24 juin 2010 à 11:35
babylone78
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention11 janvier 2011
-
28 juin 2010 à 09:08
Bonjour,
Je veux envoyer un message entre un serveur et un client via le protocole UDP et en cryptant le message avec l'algorithme symétrique AES.
Quand je crypte et decrypte le message dans le même programme , ca marche pas de souci mais lorsque je crypte le message par le sender , l'envoie au client qui le decrypt, j'obtiens une exception :
javax.crypto.BadPaddingException: Given final block not properly padded
babylone78
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention11 janvier 2011 28 juin 2010 à 09:06
Bon c'est bon j'ai trouvé, c'est parce que mon message est trop petit et le protocole udp bourre la trame avec des 0 pour completer. du coup pour recuperer le message dans mon client il faut faire :
buffer = new byte[taille];
data = new DatagramPacket(buffer, buffer.length);
try{
socket.receive(data);
System.out.print("data received from server : ");
datawithnopadding = new byte[data.getLength()] ;
for (int i = 0; i<data.getLength();i++){
datawithnopadding[i] = data.getData()[i];
}
in = new ByteArrayInputStream(datawithnopadding);
out = new ByteArrayOutputStream();
AES.crypt(in, out, aesCipher.cipher_decrypt);
String s = new String(out.toByteArray());
System.out.println("msg decrypted = "+s);
}
catch(IOException e){ System.out.println("erreur socket when receive message");}
babylone78
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention11 janvier 2011 28 juin 2010 à 09:08
ah oui AES.crypt je l'ai trouvé sur internet, si j'ai bien compris faire juste un doFinal n'est pas satisfaisant si on a un message trop long a crypter.