[HELP] Criptografia JAVA

Boa tarde galera, algum de vocês já pegou esse erro aqui?

Estou usando três classes para o processo:

import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.*;
import java.security.cert.*;

public class CryptoAES
{ private byte[] textoCifrado;
   private byte[] textoDecifrado;

   public CryptoAES()
   { textoCifrado = null;
      textoDecifrado = null;
   }

   //Gera o arquivo da chave(isso é para sistemas que vao enviar o arquivo criptografado e poder descriptografar no outro lado)
   public void geraChave(File fSim)
   throws IOException, NoSuchAlgorithmException,
   InvalidAlgorithmParameterException,
   CertificateException, KeyStoreException
   { // Gera uma chave simetrica de 128 bits:
      KeyGenerator kg = KeyGenerator.getInstance("AES");
      kg.init(128);
      SecretKey sk = kg.generateKey();
   
   // Grava a chave simetrica em formato serializado
      ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fSim));//Cria um arquivo fisico na maquina
      oos.writeObject(sk);//passa o texto da chave
      oos.close();//finaliza e salva o arquivo;
   }

   //Criptografa
   public void geraCifra(byte[] texto, File fSim)
   throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException,
   IllegalBlockSizeException, BadPaddingException,
   InvalidAlgorithmParameterException,
   IOException, ClassNotFoundException
   {
      //Transforma o arquivo em um objeto para inserção de dados
      ObjectInputStream ois = new ObjectInputStream (new FileInputStream (fSim)); //Abre o arquivo
      SecretKey iSim = (SecretKey) ois.readObject();//Pega o arquivo da Chave e transforma em objeto
      byte[] chave = iSim.getEncoded(); // transforma em bytes
      ois.close();//Fecha o arquivo
      Cipher aescf = Cipher.getInstance ("AES/CBC/PKCS5Padding");//Cria uma instancia da Cryptografia
      IvParameterSpec ivspec = new IvParameterSpec (new byte[16]);// esse é uma parametro da função abaixo
      aescf.init (Cipher.ENCRYPT_MODE, new SecretKeySpec (chave, "AES"), ivspec);//inicia(Abre) a cripitografia, passa o modo (Criptografia ou descriptografia),chave
      textoCifrado = aescf.doFinal (texto);//Faz a Cripitografia;
   }


   public byte[] getTextoCifrado() throws Exception
   { 
      return textoCifrado; //Retorna o arquivo depois de criptografado
   }

   //DesCriptografa
   public void geraDecifra(byte[] texto, File fSim)
   throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException,
   IllegalBlockSizeException, BadPaddingException,
   InvalidAlgorithmParameterException,
   IOException, ClassNotFoundException
   {
      ObjectInputStream ois = new ObjectInputStream (new FileInputStream (fSim));//abre o arquivo da chave
      SecretKeySpec iSim = (SecretKeySpec) ois.readObject();//transforma a chave em objeto
      ois.close();
      Cipher aescf = Cipher.getInstance ("AES/CBC/PKCS5Padding");//instancia(cria) o objeto de cryptografia
      IvParameterSpec ivspec = new IvParameterSpec (new byte[16]);//variavel parametro
      aescf.init (Cipher.DECRYPT_MODE, iSim, ivspec);//Inicia a Classe de criptografia(Parametros, modo:(Criptografia/Descriptografia),chave)
      textoDecifrado = aescf.doFinal (texto);//Passa o arquivo que vai ser descriptografado
   }
   public byte[] getTextoDecifrado() throws Exception
   { 
      return textoDecifrado;//Retorna o arquivo depois de descriptografado

   }
}

2ª -
 import java.io.*; 

public class Cryptografia{

//"chave.simetrica"
   public void gerarChave(String nomeArquivo){
      CryptoAES caes = new CryptoAES();
      try{
         caes.geraChave(new File(nomeArquivo));
      }
      catch(Exception e){
         e.printStackTrace();
      }
   
   }
   //----------Criptografar o arquivo
   public byte[] criptografar(String sMsgClara,String nomeChave){
      byte[] bMsgClara = null;
      try{
      // Converte o texto String dado no equivalente byte[]
         bMsgClara = sMsgClara.getBytes("ISO-8859-1");
         
      // Instancia um objeto da classe CryptoAES
         CryptoAES caes = new CryptoAES();
      
         // Gera a Chave criptografica AES simetrica e o nome do arquivo onde será armazenada
         
         caes.geraCifra(bMsgClara,new File(nomeChave));
         return   caes.getTextoCifrado();
      }
      catch(Exception e){
         e.printStackTrace();
      }
      return null   ;
   }
   //----------DesCriptografar o arquivo
   public byte[] desCriptografar(byte[] bMsgCifrada,String chave){
      CryptoAES caes = new CryptoAES();
      try{
         // Gera a decifra AES da mensagem dada, segundo a chave simetrica gerada
         caes.geraDecifra(bMsgCifrada, new File (chave));
         
         // recebe o texto decifrado
         return caes.getTextoDecifrado();
      }
      catch(Exception e){
         e.printStackTrace();
      }
      // Converte o texto byte[] no equivalente String
         //sMsgDecifrada = (new String (bMsgDecifrada, "ISO-8859-1"));
      return null;
   }
}

3ª

import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.*;
import java.security.cert.*;

public class CryptoAES
{ private byte[] textoCifrado;
   private byte[] textoDecifrado;

   public CryptoAES()
   { textoCifrado = null;
      textoDecifrado = null;
   }

   //Gera o arquivo da chave(isso é para sistemas que vao enviar o arquivo criptografado e poder descriptografar no outro lado)
   public void geraChave(File fSim)
   throws IOException, NoSuchAlgorithmException,
   InvalidAlgorithmParameterException,
   CertificateException, KeyStoreException
   { // Gera uma chave simetrica de 128 bits:
      KeyGenerator kg = KeyGenerator.getInstance("AES");
      kg.init(128);
      SecretKey sk = kg.generateKey();
   
   // Grava a chave simetrica em formato serializado
      ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fSim));//Cria um arquivo fisico na maquina
      oos.writeObject(sk);//passa o texto da chave
      oos.close();//finaliza e salva o arquivo;
   }

   //Criptografa
   public void geraCifra(byte[] texto, File fSim)
   throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException,
   IllegalBlockSizeException, BadPaddingException,
   InvalidAlgorithmParameterException,
   IOException, ClassNotFoundException
   {
      //Transforma o arquivo em um objeto para inserção de dados
      ObjectInputStream ois = new ObjectInputStream (new FileInputStream (fSim)); //Abre o arquivo
      SecretKey iSim = (SecretKey) ois.readObject();//Pega o arquivo da Chave e transforma em objeto
      byte[] chave = iSim.getEncoded(); // transforma em bytes
      ois.close();//Fecha o arquivo
      Cipher aescf = Cipher.getInstance ("AES/CBC/PKCS5Padding");//Cria uma instancia da Cryptografia
      IvParameterSpec ivspec = new IvParameterSpec (new byte[16]);// esse é uma parametro da função abaixo
      aescf.init (Cipher.ENCRYPT_MODE, new SecretKeySpec (chave, "AES"), ivspec);//inicia(Abre) a cripitografia, passa o modo (Criptografia ou descriptografia),chave
      textoCifrado = aescf.doFinal (texto);//Faz a Cripitografia;
   }


   public byte[] getTextoCifrado() throws Exception
   { 
      return textoCifrado; //Retorna o arquivo depois de criptografado
   }

   //DesCriptografa
   public void geraDecifra(byte[] texto, File fSim)
   throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException,
   IllegalBlockSizeException, BadPaddingException,
   InvalidAlgorithmParameterException,
   IOException, ClassNotFoundException
   {
      ObjectInputStream ois = new ObjectInputStream (new FileInputStream (fSim));//abre o arquivo da chave
      SecretKeySpec iSim = (SecretKeySpec) ois.readObject();//transforma a chave em objeto
      ois.close();
      Cipher aescf = Cipher.getInstance ("AES/CBC/PKCS5Padding");//instancia(cria) o objeto de cryptografia
      IvParameterSpec ivspec = new IvParameterSpec (new byte[16]);//variavel parametro
      aescf.init (Cipher.DECRYPT_MODE, iSim, ivspec);//Inicia a Classe de criptografia(Parametros, modo:(Criptografia/Descriptografia),chave)
      textoDecifrado = aescf.doFinal (texto);//Passa o arquivo que vai ser descriptografado
   }
   public byte[] getTextoDecifrado() throws Exception
   { 
      return textoDecifrado;//Retorna o arquivo depois de descriptografado

   }
}

Agradeço desde já :slight_smile:

Olá,

Aqui tem um exemplo: http://stackoverflow.com/questions/15554296/simple-java-aes-encrypt-decrypt-example