Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Security.Cryptography; //Para usar as funções Hash
- using System.Text;
- namespace ConsoleApp1
- {
- class Program
- {
- static void Main(string[] args)
- {
- /*
- * -O programa abaixo é uma implementação dos algoritmos de hash (para arquivos)
- * SHA256, SHA384 e SHA512;
- * -Esse tipo de algoritmo é geralmente utilizado para verificação a integridade de arquivos;
- * -Pra quem quiser analisar se o programa está funcionando corretamente, basta comparar
- * os hashes com os desse serviço online https://emn178.github.io/online-tools/index.html (na seção File Hash);
- * -Basta copiar o código, colar em um Console Application e compilar;
- *
- * Criado por: Andrew Vargas
- * Facebook: https://www.facebook.com/andrewvargas1991
- * PS: Pra quem tá com preguiça de copiar e compilar, hahaha, baixe no link
- * https://mega.nz/#!31QEAQgB!ZKJgrWETHDh4dCoq1wythMZ8YmGnXi3amDXacndpG4Y
- */
- Console.Write("Escolha um arquivo: ");
- string arquivo = Console.ReadLine(); //Lê a string a ser calculado o hash
- arquivo = arquivo.Replace("\"", "");
- string sha256 = SHA.GenerateSHA256String(arquivo); //Chama o método hash SHA256
- string sha384 = SHA.GenerateSHA384String(arquivo); //Chama o método hash SHA384
- string sha512 = SHA.GenerateSHA512String(arquivo); //Chama o método hash SHA512
- //Imprime o SHA256. SHA384 e SHA512, o :X2 serve para formatar a impressão na forma mais conhecida
- Console.WriteLine("\nSHA256 de {0:X2}:\n{1}\n", arquivo, sha256);
- Console.WriteLine("\nSHA384 de {0:X2}:\n{1}\n", arquivo, sha384);
- Console.WriteLine("SHA512 de {0:X2}:\n{1}", arquivo, sha512);
- Console.ReadKey();
- }
- public static class SHA //Cria uma classe chamada SHA
- {
- //Método para gerar hash SHA256 tendo retorno e parâmetro do tipo string
- public static string GenerateSHA256String(string ArquivoEntrada)
- {
- SHA256 sha256 = SHA256Managed.Create(); //Cria uma instância para SHA256
- byte[] bytes = File.ReadAllBytes(ArquivoEntrada); //Lê os bytes do arquivo
- byte[] hash = sha256.ComputeHash(bytes); //Calcula o hash e armazena em um vetor de bytes
- return GetStringFromHash(hash); //Retorna chamando o método de conversão de vetor de bytes para string
- }
- //Método para gerar hash SHA384 tendo retorno e parâmetro do tipo string
- public static string GenerateSHA384String(string ArquivoEntrada)
- {
- SHA384 sha384 = SHA384Managed.Create(); //Cria uma instância para SHA384
- byte[] bytes = File.ReadAllBytes(ArquivoEntrada); //Lê os bytes do arquivo
- byte[] hash = sha384.ComputeHash(bytes); //Calcula o hash e armazena em um vetor de bytes
- return GetStringFromHash(hash); //Retorna chamando o método de conversão de vetor de bytes para string
- }
- //Método para gerar hash SHA512 tendo retorno e parâmetro do tipo string
- public static string GenerateSHA512String(string ArquivoEntrada)
- {
- SHA512 sha512 = SHA512Managed.Create(); //Cria uma instância para SHA512
- byte[] bytes = File.ReadAllBytes(ArquivoEntrada); //Lê os bytes do arquivo
- byte[] hash = sha512.ComputeHash(bytes); //Calcula o hash e armazena em um vetor de bytes
- return GetStringFromHash(hash); //Retorna chamando o método de conversão de vetor de bytes para string
- }
- //Converte os vetores de bytes das funções de hash para string
- private static string GetStringFromHash(byte[] hash)
- {
- StringBuilder result = new StringBuilder(); //Cria uma instância para StringBuilder
- for (int i = 0; i < hash.Length; i++) //Percorre o vetor de bytes
- {
- result.Append(hash[i].ToString("X2")); //Converte os bytes para char
- }
- return result.ToString(); //Retorna o hash em forma de string
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement