Dêem uma olhada na documentação no site.
Para quem ainda não sabe o que é CRC - ele é uma sigla que vem do inglês Cyclic redundancy check (quer dizer: verificação de redundância cíclica). É uma espécie de código detector de erros, que gera um valor expresso em poucos bits em função de um bloco maior de dados (que é o que queremos verificar, no nosso caso um arquivo). Com isto se transmitimos um arquivo para alguém e mandamos junto o CRC, o destinatário pode detectar erros de transmissão ou armazenamento comparando o valor que ele calcula no arquivo recebido com o CRC que também recebeu.
Notem que isto não garante qualquer integridade da mensagem. Não estamos falando de segurança de dados. Um atacante pode facilmente forjar uma mensagem, gerar um CRC e mandar para você. A única coisa que você consegue é saber se os bytes foram recebidos ok.
Se você quiser saber mais sobre o CRC dê uma olhada neste link da wikipedia (é o texto em inglês, o em português é muito pobre). Você pode ainda dar uma olhada na RFC 1952.
Vamos a nossa classe. O processo em Java é bastante simples e consiste de três etapas:
- criamos a classe
- chamamos uma (ou diversas vezes) o método update()
- chamamos getValue() para obter o CRC
Abaixo a nossa classe comentada:
Queria destacar aqui um método que ainda não utilizei neste blog. É Files.readAllBytes() - ele permite ler todos os bytes de um arquivo na forma de um array. Com isto economizo a chamada para java.io.FileInputStream e java.io.BufferedInputStream.
Vamos rodar sobre os nossos arquivos:
PS: para aqueles curiosos, estou usando um ambiente muito light feito em Java chamado DrJava toda vez que desenvolvo uma classe pequena e simples. É um único arquivo jar que deixo no meu Skydrive, assim quando vou escrever algo para este blog, basta acessá-lo, rodar e pronto... funciona no linux (estou agora nesta plataforma), em windows e mac.
Nenhum comentário:
Postar um comentário