Hallo.
Ich habe eine Klasse die einen mit AES verschlüsselten Text wieder entschlüsselt. Die Verschlüsselung hat super funktioniert aber bei der Entschlüsselung bekomme ich immer einen Fehler:
Der Fehler:
	
	
	
	
	
		
	
und der Code
	
	
	
	
	
		
	
			
			Ich habe eine Klasse die einen mit AES verschlüsselten Text wieder entschlüsselt. Die Verschlüsselung hat super funktioniert aber bei der Entschlüsselung bekomme ich immer einen Fehler:
Der Fehler:
		Java:
	
	at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
 at javax.crypto.Cipher.init(Cipher.java:1396)
 at javax.crypto.Cipher.init(Cipher.java:1327)
 at HelloWorld.decrypt(HelloWorld.java:56)
 at HelloWorld.main(HelloWorld.java:22)und der Code
		Java:
	
	import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
public class HelloWorld {
  public static void main(String[] args) throws Exception {
 
   String text = "uMwZ3jWryoPp/tjnGV7bBwZQZoFLwBYaWni70Qi4kEw9TD+2J9S4/ILFDzn0VAAd4aNjTJD+guBIOl0TbUd3Bg==";
   String keyStr = "sehrgeheimerschlüssel";
   String dec = decrypt(text, keyStr);
   System.out.println("Decrypt:" + dec);
  }
  
 
public static String decrypt(String text, String keyStr)throws InvalidKeyException, IllegalBlockSizeException,BadPaddingException, UnsupportedEncodingException,NoSuchAlgorithmException, NoSuchPaddingException,InvalidAlgorithmParameterException{
 // Das Passwort bzw der Schluesseltext
 
 // byte-Array erzeugen
 byte[] key = (keyStr).getBytes("UTF-8");
 // aus dem Array einen Hash-Wert erzeugen mit MD5 oder SHA
 MessageDigest sha = MessageDigest.getInstance("SHA-256");
 key = sha.digest(key);
 // nur die ersten 128 bit nutzen
 key = Arrays.copyOf(key, 16); 
 // der fertige Schluessel
 SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
 
 
 
 
 
 byte[] encryptedData = DatatypeConverter.parseBase64Binary(text);
 Cipher cipher = Cipher.getInstance("AES");
 byte[] iv = Arrays.copyOfRange(encryptedData, 0, 16);
 byte[] cipherText = Arrays.copyOfRange(encryptedData, 16, encryptedData.length);
 IvParameterSpec iv_specs = new IvParameterSpec(iv);
 cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv_specs);
 byte[] plainTextBytes = cipher.doFinal(cipherText);
 String plainText = new String(plainTextBytes);
 return plainText;
 }
} 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		