Java e Checksum MD5... Problemas

Pessoal, fiz um método para gerar MD5 de um arquivo, porém começou a dar erro…
Não sei por que razão… eu faço um checksum no que gera o arquivo e na outra ponta que recebe o arquivo, e o MD5 está diferente. Como prova real, peguei um programa pronto que verifica o MD5 e conclusão, a ponta que recebe está gerando o Md5 certinho, mas a geradora do arquivo não…
Se alguém puder me ajudar, ficaria grato:

public static String gerarMD5sum(){ MessageDigest digest; { InputStream is = null; String md5 = ""; try { digest = MessageDigest.getInstance("MD5"); File arquivo = new File("D://dados.zip"); is = new FileInputStream(arquivo); int size = (int) arquivo.length(); byte[] buffer = new byte[size]; int read = 0; while ((read = is.read(buffer)) > 0) { digest.update(buffer, 0, read); } md5 = new BigInteger(1, digest.digest()).toString(); System.out.println("MD5: "+md5); return md5; } catch (NoSuchAlgorithmException ex) { Logger.getLogger(UtilWebService.class.getName()).log(Level.SEVERE, null, ex); return null; } catch (IOException ex) { Logger.getLogger(UtilWebService.class.getName()).log(Level.SEVERE, null, ex); return null; } finally { try { is.close(); return md5; } catch (IOException ex) { Logger.getLogger(UtilWebService.class.getName()).log(Level.SEVERE, null, ex); return null; } } } }

[quote=dcbasso]Pessoal, fiz um método para gerar MD5 de um arquivo, porém começou a dar erro…
Não sei por que razão… eu faço um checksum no que gera o arquivo e na outra ponta que recebe o arquivo, e o MD5 está diferente. Como prova real, peguei um programa pronto que verifica o MD5 e conclusão, a ponta que recebe está gerando o Md5 certinho, mas a geradora do arquivo não…
[/quote]

Então a parte de transmissão de arquivo (não o seu código de cálculo de MD5) está com problemas, não?

Era o gerador!!!
Segue correção do código, caso alguém queria… só pegar e melhorar e modificar para sua necessidade!

-- REMOVIDO
  • Pelos meus testes aqui, era o código mesmo, agora o MD5 tá vindo como deveria ser.
    ** ESTAREI REALIZANDO MAIS TESTES PARA VERIFICAR SE HÁ ERROS, UMA DAS CONDIÇÕES DEU CERTO!

Errado pessoal, me enganei…
Acontece que se o arquivo tiver exatos 1024bytes ele lê certinho, maior que isso tomo erro!
Mas o erro esta mesmo na geração do MD5!

Acho que achei o erro!
Ele ta pegando o tamanho do arquivo errado, com uns bytes a menos… de 1116bytes ele “vê” 1111bytes… daí o MD5 dá erro!

uhauhauha, já resolvo!!! Mas o método acima postado funciona normalmente…