Olá! Quarta Feira, 23 de Maio de 2012.



Dicas CódigoFonte.net
Quinta Feira, 04 de Janeiro de 2007

O Calculando o CheckSum para um arquivo em VB.NET

Para ter certeza que o conteúdo de um arquivo não foi alterado você pode gerar um checksum deste arquivo. Um checksum é um valor short ou string que é criado usando o conteúdo do arquivo. O Cálculo do checksum de arquivos com conteúdos idênticos irá gerar resultados idênticos, mas se o conteúdo dos arquivos for diferente então valores de checksum diferentes serão obtidos. Um bom algoritmo para gerar checksum deve ser muito sensível a qualquer mudança na fonte dos dados.

CheckSum - Pode ser entendido também como um sistema de checagem (Cálculo de CRC - Cycling redundance check) que consiste em verificar um arquivo ou pacote de dados utilizando um código enviado no início da transmissão. O código é usado pelo receptor para verificar se a transmissão está completa e se o arquivo não está corrompido.

Vamos mostrar a seguir como gerar o checksum no VB 2005

Crie uma nova aplicação do tipo Windows Forms e inclua dois controles TextBox chamados
txtArquivo
e
lblCheckSum
e um controle Button chamado
btnGerarCheckSum
. A seguir defina a propriedade
lblCheckSum.ReadOnly
como True. Abaixo temos o layout do formulário criado:

Clique para ver a imagem em seu tamanho real

Os namespaces usados no projeto são:

Imports System.Text
Imports System.Security.Cryptography


O código do botão - Gerar CheckScum - é dado a seguir:



A rotina que efetua a geração do checkSum usando as funções de Hash é dado a seguir:



Executando o projeto e selecionando um arquivo existente chamado checksum.txt para gerar o checksum o resultado obtido é mostrado a seguir:

Clique para ver a imagem em seu tamanho real

Os valores de CheckSum são especialmente úteis quando você quer saber se dois arquivos , ou dois conjuntos de dados, contêm conteúdo idêntico. Eles são tipicamente gerados usando um algoritmo de hashing - um método de processamento que toma uma parte do conteúdo original e gera um valor condensado representando o conteúdo completo.

Um hash é uma seqüência de letras ou números geradas por um algoritmo de dispersão.
Essa seqüência busca identificar um arquivo ou informação unicamente. Por exemplo: uma mensagem de correio eletrônico, uma senha, uma chave criptográfica ou mesmo um arquivo. É um método para transformar dados de tal forma que o resultado seja (quase) exclusivo. Além disso, funções usadas em criptografia garantem que não é possível a partir de um valor de hash retornar à informação original.

Como a seqüência do hash é limitada, muitas vezes não passando de 512 bytes, existem diversas colisões (seqüências iguais para dados diferentes). Quanto maior for a dificuldade de se criar colisões intencionais, melhor é o algoritmo.

Uma função de hash recebe um valor de um determinado tipo e retorna um código para ele. Enquanto o ideal seria gerar identificadores únicos para os valores de entrada, isso normalmente não é possível: na maioria dos casos, o contra-domínio de nossa função é muito menor do que o seu domínio, ou seja, x (o tipo de entrada) pode assumir uma gama muito maior de valores do que hash(x) (o resultado da função de hash).

Os mais usados algoritmos de hash são os 16 bytes: MD2, MD4, MD5 ou o SHA-1, de 20 bytes. Características de alguns algoritmos:

1 - MD4: Desenvolvido em 1990/91 por Ron Rivest, vários ataques foram detectados, o que fez com que o algoritmo fosse considerado frágil.
2 - SHA-1 (Secure Hash Algorithm): Desenvolvido pelo NIST e NSA e é considerado como o mais seguro atualmente.
fonte - Wikipédia - http://pt.wikipedia.org/wiki/Hash


Os algoritmos hashing processam a entrada de dados em blocos. Como um hash é calculado para cada bloco, o próximo bloco é produzido e usado ou sobreposto em um hash existente. Esta constante mesclagem de dados torna o algoritmo sensível a qualquer mudança no seu conteúdo original.

A .NET Framework incluí diversos algoritmos de hashing e características de criptografia no namespace
System.Security.Cryptography
. O código do exemplo mostrado acima usa a classe
HMACSHA1
(Hash-based Message Authentication Code, ou HMAC, via a função de hash SHA-1) do namespace
System.Security.Cryptography
para gerar o hash.

As funções de hash como a função SHA-1 foram desenvolvidas por organizações privadas e agências de segurança do governo para ajudar a proteger informações. Diversas funções de hash similares e algoritmos de cifragem estão incluídas neste namespace para serem usadas conforme sua necessidade.

Por José Carlos Macoratti - www.macoratti.net

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:






CodigoFonte.net » CodigoFonte.eti.br » Compre De Tudo » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com