1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

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)
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags criptografia java ou faça a sua própria pergunta.