Ajuda no código fonte para descriptografar usando o AES - Simples

Java

08/07/2016

Bom Pessoal, sou novo no fórum e resolvi pedir um auxilio aqui.
Estou tentando criar um pequeno software simples de criptografia usando o código AES, disponível originalmente https://www.devmedia.com.br/utilizandocriptografiasimetricaemjava/
31170.
Mas nessa minha adaptação, estou usando o JOptionPane para a parte gráfica, e a condição IF para o usuário escolher se ele deseja criptografar ou descriptografar.
Na parte de criptografar, esta funcionando corretamente, o usuário digita o texto, e o programa, imprime para o usuário o código (mas com um pequeno erro no final, fica aparecendo repetidamente por 16 vezes o código)
E na parte de descriptografar não onde o usuário deveria inserir o codigo, ele esta dando erro em uma variável, e que não consigo resolver.
Variavel encriptado, Linha String textodecriptado = decrypt(encriptado, chaveencriptacao);

Codigo Completo
package painel;

import javax.swing.JOptionPane;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.Cipher;


public class Painel {
    
    static String IV = "AAAAAAAAAAAAAAAA";
    static String textopuro;
    static String chaveencriptacao = "0123456789abcdef";

    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Software de Criptografia AES V1.0 - Watte");
        
        Object[] itens = {"Criptografar", "Descriptografar"};
        Object selectValue = JOptionPane.showInputDialog(null, "Escolha a opção desejada", 
                "Software de Criptografia AES V1.0", JOptionPane.INFORMATION_MESSAGE, null, itens, itens [0]);
        
        try{            
            
        if (selectValue == itens[0]) { //aqui o usuario criptografa, digitando o texto
        textopuro = JOptionPane.showInputDialog("Digite abaixo oque deseja Criptografar");
        byte[] textoencriptado = encrypt(textopuro, chaveencriptacao);
        
        for(int i=0; i<textoencriptado.length; i++)
            JOptionPane.showMessageDialog(null, "Criptografado: "+ new Integer(textoencriptado[1]));
        System.exit(0);
        }
        
        if (selectValue == itens[1]) { // aqui o usuario descriptografa, inserindo o codigo a ser descriptografado
            encriptado = JOptionPane.showInputDialog("Insira abaixo o codigo que deseja Descriptografar:");      
        String textodecriptado = decrypt(encriptado, chaveencriptacao); //na variavel encriptado esta com erro
        
        JOptionPane.showMessageDialog(null, "Codigo Descriptografado: "+textodecriptado);
        }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static byte[] encrypt(String textopuro, String chaveencriptacao) throws Exception {
            Cipher encripta = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
            SecretKeySpec key = new SecretKeySpec(chaveencriptacao.getBytes("UTF-8"),"AES");
            encripta.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(IV.getBytes("UTF-8")));
            return encripta.doFinal(textopuro.getBytes("UTF-8"));
    }
    
    public static String decrypt(byte[] encriptado, String chaveencriptacao) throws Exception {
        Cipher decripta = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
        SecretKeySpec key = new SecretKeySpec(chaveencriptacao.getBytes("UTF-8"), "AES");
        decripta.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV.getBytes("UTF-8")));
        return new String(decripta.doFinal(encriptado), "UTF-8");
    }
}
Lenoir

Lenoir

Curtidas 0
POSTAR