Ajuda com Criptografia

1 resposta
H

eu fiz um programinha para gera um arquivo txt que é uma licença para meu segundo programa. Nele eu tenho informações como data inicial e data final da licença…Como é um arquivo txt, e possui essas datas eu criptografei com DES, então o arquivo fica protegido de qualquer alteração do usuario.
Acontece que quando eu vou ler o arquivo criptografado, ele não consegue decifrar e gera outra String aleatoria.
Mais eu fiz um teste, logo depois que crio o arquivo criptografado eu crio outro decifrando o arquivo que acabei de criar…e funciona!!! o codigo que eu uso para criptografar é o seguinte.

<blockquote>public class DesEncrypter {

Cipher ecipher;

Cipher dcipher;
DesEncrypter(SecretKey key) {
        // Create an 8-byte initialization vector
        byte[] iv = new byte[]{
            (byte)0x8E, 0x12, 0x39, (byte)0x9C,
            0x07, 0x72, 0x6F, 0x5A
        };
        AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
        try {
            ecipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            dcipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

            // CBC requires an initialization vector
            ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
            dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
        } catch (java.security.InvalidAlgorithmParameterException e) {
        } catch (javax.crypto.NoSuchPaddingException e) {
        } catch (java.security.NoSuchAlgorithmException e) {
        } catch (java.security.InvalidKeyException e) {
        }
    }

    // Buffer used to transport the bytes from one stream to another
    byte[] buf = new byte[1024];

    public void encrypt(InputStream in, OutputStream out) {
        try {
            // Bytes written to out will be encrypted
            out = new CipherOutputStream(out, ecipher);

            // Read in the cleartext bytes and write to out to encrypt
            int numRead = 0;
            while ((numRead = in.read(buf)) >= 0) {
                out.write(buf, 0, numRead);
            }
            out.close();
        } catch (java.io.IOException e) {
        }
    }

    public void decrypt(InputStream in, OutputStream out) {
        try {
            // Bytes read from in will be decrypted
            in = new CipherInputStream(in, dcipher);

            // Read in the decrypted bytes and write the cleartext to out
            int numRead = 0;
            while ((numRead = in.read(buf)) >= 0) {
                out.write(buf, 0, numRead);
            }
            out.close();
        } catch (java.io.IOException e) {
        }
    }
}</blockquote>

1 Resposta

T

Você não postou o código que cria a chave (key). Provavelmente você está gerando uma chave nova a cada vez que se roda o programa.

Criado 26 de janeiro de 2007
Ultima resposta 26 de jan. de 2007
Respostas 1
Participantes 2