C#  -  Calculando o Hash de arquivos


 Neste artigo vou mostrar como calcular o Hash de arquivos usando a linguagem  C#.

Os códigos de hash são códigos que representam, de forma concisa, arquivos ou outros trechos de dados. A ideia básica é combinar os bytes dos dados de maneira que dois arquivos diferentes tenham códigos hash diferentes.
 

Se você salvar o código de hash de um arquivo, poderá dizer se alguém modificou o arquivo calculando um novo código de hash e verificando se ele corresponde ao valor que você salvou originalmente.

Neste artigo vamos usar dois algoritmos de hashing diferentes: MD5 e SHA256. Ambos são fornecidos pelo namespace System.Security.Cryptography.

Vamos usar a classe abstrata SHA256 que calcula o hash SHA256 para os dados de entrada. O tamanho do hash SHA256 é de 256 bits.

O método ComputeHash vai calcular o hash e retornar um fluxo de bytes. Como não podemos exibir um fluxo de bytes diretamente para o usuário, vamos usar um método para converter os bytes em uma string.

Já a classe MD5 representa a classe base abstrata da qual todas as implementações do algoritmo de hash MD5 herdam. O tamanho do hash MD5 é de 128 bits.

O método ComputeHash da classe MD5 vai calcular o hash e retornar uma matriz de 16 bytes, mas, algumas implementações de MD5 produzem um hash de 32 caracteres, em formato hexadecimal.

Para poder interoperar com tais implementações, vamos formatar o valor de retorno de ComputeHash como um valor hexadecimal.

A seguir vou mostrar um forma bem simples de implementar isso.

Recursos Usados

Criando o projeto Windows Forms

Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem C# e o template Windows Forms App (.NET Framework).

Informe um nome a seu gosto. Eu vou usar o nome CSharp_ArqHash;

No formulário Form1 do projeto inclua os seguintes controles a partir da ToolBox:

  • 1 Label - Text=Arquivo
  • 1 TextBox - txtArquivo
  • 1 Button - btnLocalizar
  • 1 Button - btnCalcularHash
  • 1 GroupBox
  • 2 Labels
  • 2 TextBox - txtMD5 e txtSHA256
  • 1 OpenFileDialog - ofdlg1

Disponha os controles conforme o leiaute da figura abaixo:

A seguir inclua no formulário os seguintes namespaces:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Windows.Forms;


No evento Load do formulário inclua o código que carrega o caminho e nome do arquivo executável da aplicação:

No botão para localizar o arquivo inclua no evento Click o código abaixo:

O código apenas atribui o nome do arquivo selecionado à caixa de texto txtArquivo.

Agora no evento Click do botão Calcular Hash define o código que vai calcular o hash md5 e sha256:

Estamos usando os métodos GetHashMD5() e GetHashSha256() para calcular o hash e convertendo o resultado de bytes para string.

1- Método GetHashMD5()

2- Método GetHashSha256()

A seguir o código do método BytesToString() para converter o resultado para string:

Executando o projeto e iremos obter:

Pegue o projeto completo aqui :  CSharp_ArqHash.zip

"Como está escrito : Não há um justo, nem um sequer."
Romanos 3:10

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti