Interpreter-Fehler AES verschlüsselung mit MD5 key

  • Themenstarter Themenstarter C0dR
  • Beginndatum Beginndatum
C

C0dR

Gast
Hallo!
Ich habe ein Problem und zwar wollte ich mir einen Java Server schreiben, der AES verschlüsselte Daten über einen Socket bekommt und diese mit einem Key (MD5) entschlüsselt.

Java:
MessageDigest md5;
try {
	md5 = MessageDigest.getInstance("MD5");
	byte[] key = md5.digest(pw.getBytes("UTF-8"));
	//key = Arrays.copyOf(key, 16); // use only first 128 bit
	secretKeySpec = new SecretKeySpec(key, "AES");

	
	cipher = Cipher.getInstance("AES");
} catch (NoSuchAlgorithmException e1) {
	// TODO Auto-generated catch block
	e1.printStackTrace();
 catch (NoSuchPaddingException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
 catch (UnsupportedEncodingException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

...

String originalMessage;
try {
	cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
	originalMessage = new String(cipher.doFinal(line.getBytes()));
	System.out.println("The original message: " + originalMessage);
} catch (InvalidKeyException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} catch (IllegalBlockSizeException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();	
} catch (BadPaddingException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

Aber ich bekomme nur ein
Code:
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*..)

Kann mir eine weiter helfen? Mache ich beim Key etwas falsch?

lg
C0dR
 
du musst für AES noch ein Padding festlegen, da dein Array bestimmt nicht genau der Blockgröße von AES entspricht, weiß Java nicht, wie es die restlichen Stellen des Blockes auffüllen muss, dafür ist das Padding zuständig.
 
Wie genau kann ich das anstellen? hab jetzt nur rechts links padding über google gefunden aber nichts zum auffüllen des Blockes...
 

Zurück
Oben