importbr.com.bradesco.webta.security.crypto.WEBTACryptoUtil;importbr.com.bradesco.webta.security.crypto.WEBTAInputStream;importbr.com.bradesco.webta.security.exception.CryptoException;importbr.com.bradesco.webta.security.exception.ParameterException;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.util.logging.Level;importjava.util.logging.Logger;publicclassDescriptografia{privateWEBTAInputStreamleitor;privatebyte[]bufDecripto=null;;privateFileWriterarquivo;publicvoiddescriptografar(){Filearquivo_chave=newFile("criptografia201312101113.bin");try{//chave que será utilizada como parâmetro nos métodos de Criptografia e Descriptografia byte[]chave=WEBTACryptoUtil.decodeKeyFile(arquivo_chave,"XXXXXX");//Cria objeto para ler o arquivo criptografado recebe(nome do arquivo, pasta do arquivo e chave de criptografia) leitor=newWEBTAInputStream("500_CB041200.RET","NetBeansProjects/CriptografiaBradesco",chave);if(leitor==null){System.out.println("Erro");}while(leitor.read(bufDecripto)>0){arquivo=newFileWriter(newFile("Arquivo.txt"));arquivo.write(bufDecripto.toString());arquivo.close();}}catch(ParameterExceptionex){Logger.getLogger(Descriptografia.class.getName()).log(Level.SEVERE,null,ex);}catch(IOExceptionex){Logger.getLogger(Descriptografia.class.getName()).log(Level.SEVERE,null,ex);}catch(CryptoExceptionex){Logger.getLogger(Descriptografia.class.getName()).log(Level.SEVERE,null,ex);}}}
O erro que aparece é esse:
Exception in thread “main” java.lang.NullPointerException
at br.com.bradesco.webta.security.crypto.WEBTAInputStream.read(WEBTAInputStream.java:427)
at teste.Descriptografia.main(Descriptografia.java:38
Java Result: 1
Na linha: " while(leitor.read(bufDecripto)>0){"
E estou seguindo o manual que está em anexo.
Se alguém puder me ajudar, agradeço muito.
D
daniesouza
seu byteArray bufDecripto esta nulo… inicializa ele e tenta denovo.
Se você trabalhasse na minha equipe eu estampava meu pé na sua bunda, como você coloca código de cliente em um fórum?, tira isso daí!
L
lourencoS
Não tem nenhum código cliente, esse é código que o próprio Bradesco disponibiliza para o desenvolvedor que deseja realizar integração com o sistema deles. Essas funções estão no manual que eles disponibilizam, porém não consigo fazer funcionar. A única informação do cliente que teria nesse código é a senha que eu mudei por XXXXXX.
D
daniesouza
bom… nesse caso eu tentaria abrir o criptografia201312101113.bin e procuraria o que é esse LL Field que esta dizendo no erro…
M
mrglauber
Veja o código que fiz amigo, o único problema que estou tendo é quanto a gravação dos bytes em arquivo pois aparece algum lixo no meio do arquivo e ainda nao achei a solução.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagecriptografiabradesco;importbr.com.bradesco.webta.security.crypto.WEBTACryptoUtil;importbr.com.bradesco.webta.security.crypto.WEBTAInputStream;importbr.com.bradesco.webta.security.exception.CryptoException;importbr.com.bradesco.webta.security.exception.ParameterException;importjava.awt.FileDialog;importjava.awt.Frame;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.FileWriter;/** * * @author glauber */publicclassCriptografiaBradesco{/** * @param args the command line arguments */publicstaticvoidmain(String[]args)throwsIOException{FileDialogabrearquivo,fechaArquivo;//Informa o arquivo onde será gravado o resultadofechaArquivo=newFileDialog(newFrame(),"Salvar Arquivo",FileDialog.SAVE);abrearquivo=newFileDialog(newFrame(),"Abrir Arquivo para Descriptografia",FileDialog.LOAD);abrearquivo.setVisible(true);//Para Gravar o arquivofechaArquivo.setVisible(true);WEBTAInputStreamwis=null;byte[]bufDecripto=newbyte[8192];intbytesLidos=0;try{//Obtem chave de criptografiabyte[]chaveCripto=WEBTACryptoUtil.decodeKeyFile(newFile("chave.bin"),"[telefone removido]");//Cria objeto para ler o arquivo criptografadowis=newWEBTAInputStream(abrearquivo.getFile(),"D:/",chaveCripto);//é lido, descriptografado, descomprimido e armazenado em bufDecripto.//Este loop e´executado enquanto houver dados para leituratry(BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream(fechaArquivo.getFile()))){while((wis.read(bufDecripto))>0){//Gravação dos dados do buffer no arquivobos.write(bufDecripto);//Gravamos os bytes lá bos.flush();}bos.close();}}catch(ParameterException|IOException|CryptoExceptione){//Efetua tratamento da excecaoSystem.out.println(e.getMessage());}finally{if(wis!=null){try{wis.close();}catch(IOExceptione){//Efetua tratamento da excecaoSystem.out.println(e.getMessage());}}}}}
D
daniesouza
tenta tirar o bos.flush(); de dentro do bloco while e coloca antes do bos.close() e veja o que acontece.
M
mrglauber
Ja fiz isso e nao surtiu efeito, nao tinha o bos.flush () e ja tinha esse problema
Veja o código que fiz amigo, o único problema que estou tendo é quanto a gravação dos bytes em arquivo pois aparece algum lixo no meio do arquivo e ainda nao achei a solução.
Já verificou se o lixo que aparece é algo que deveria ter sido decriptografado ou não. Outras partes do arquivo estão ok?
PS: só agora que vi, este tópico já deve ter sido resolvido…
M
magnus81
Bom dia, eu estou precisando criptografar e descriptografar arquivos de remessa e de retorno para usar o WEBTa do bradesco.
So que nao programo nada em JAVA.
Preciso que funcione em LINUX, eu passo o caminho do arquivo a ser criptografado a senha do arquivo .bin e me criptografa o arquivo.