Versão atual:

descriptografia

Olá estou fazendo um sistema bem simples, de um lado ele grava e criptografa uma senha, mas quando tento descriptografar, ocorre um erro, alguém pode me ajudar

import java.text.SimpleDateFormat;
import java.util.List;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

import sun.misc.BASE64Decoder;
import br.com.caelum.DAO.ContatoDAO;
import br.com.caelum.modelo.Contato;

public class TestaLista {

    public static void main(String[] args) throws Exception {

        ContatoDAO dao = new ContatoDAO();
        List<Contato> contatos = dao.getLista();
        String dataString = "dd/MM/yyyy";  
        SimpleDateFormat spd = new SimpleDateFormat(dataString);

        for (Contato contato : contatos){

            System.out.println("Nome:" + contato.getNome());
            KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
            SecretKey desKey = keygenerator.generateKey();    
            Cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
            desCipher.init(Cipher.DECRYPT_MODE,desKey);
            byte[] strCr64 = (contato.getSenha()).getBytes();
            System.out.println("aqui sai criptografada: " + new String(strCr64)); 
            System.out.println("até aqui ok");
            byte[] msgOriginal = desCipher.doFinal(strCr64);
            System.out.println("aqui ñ roda"); 
                BASE64Decoder decB64 = new BASE64Decoder();
                String s = new String (msgOriginal);
                byte[] msgEncryptOriginalN = decB64.decodeBuffer(s);

            System.out.println("senha:" + new String(msgEncryptOriginalN));
            System.out.println("email:" + contato.getEmail());
            System.out.println("endereco:" + contato.getEndereco());
            System.out.println("data de nascimento:" + spd.format(contato.getDataNascimento().getTime()) + "\n");
        }

    }

}

o erro é esse:

Nome:João Santos
aqui sai criptografada: ?���{mK
até aqui ok
Exception in thread "main" javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:913)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:824)
    at com.sun.crypto.provider.DESCipher.engineDoFinal(DESCipher.java:314)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at br.com.caelum.teste.TestaLista.main(TestaLista.java:33)

Versão(1):

Ver a versão formatada

descriptografia

  • criado 19 de jul de 2015

Comentário

new question