Advertisement
amv1991

SHA512 para arquivos (Outro método)

Mar 22nd, 2020
277
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.55 KB | None | 1 0
  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;     //Para usar as funções Hash
  4. using System.Text;
  5.  
  6. namespace ConsoleApp1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             /*
  13.              *          -O programa abaixo é uma implementação dos algoritmos de hash (para arquivos)
  14.              *              SHA256, SHA384 e SHA512;
  15.              *          -Esse tipo de algoritmo é geralmente utilizado para verificação a integridade de arquivos;
  16.              *          -Pra quem quiser analisar se o programa está funcionando corretamente, basta comparar
  17.              *              os hashes com os desse serviço online https://emn178.github.io/online-tools/index.html (na seção File Hash);
  18.              *          -Basta copiar o código, colar em um Console Application e compilar;
  19.              *          
  20.              *          Criado por: Andrew Vargas
  21.              *          Facebook: https://www.facebook.com/andrewvargas1991
  22.              *          PS: Pra quem tá com preguiça de copiar e compilar, hahaha, baixe no link
  23.              *              https://mega.nz/#!31QEAQgB!ZKJgrWETHDh4dCoq1wythMZ8YmGnXi3amDXacndpG4Y
  24.              */
  25.  
  26.             Console.Write("Escolha um arquivo: ");
  27.             string arquivo = Console.ReadLine();    //Lê a string a ser calculado o hash
  28.             arquivo = arquivo.Replace("\"", "");
  29.  
  30.             string sha256 = SHA.GenerateSHA256String(arquivo);  //Chama o método hash SHA256
  31.             string sha384 = SHA.GenerateSHA384String(arquivo);  //Chama o método hash SHA384
  32.             string sha512 = SHA.GenerateSHA512String(arquivo);  //Chama o método hash SHA512
  33.  
  34.             //Imprime o SHA256. SHA384 e SHA512, o :X2 serve para formatar a impressão na forma mais conhecida
  35.             Console.WriteLine("\nSHA256 de {0:X2}:\n{1}\n", arquivo, sha256);
  36.             Console.WriteLine("\nSHA384 de {0:X2}:\n{1}\n", arquivo, sha384);
  37.             Console.WriteLine("SHA512 de {0:X2}:\n{1}", arquivo, sha512);
  38.  
  39.             Console.ReadKey();
  40.         }
  41.  
  42.         public static class SHA     //Cria uma classe chamada SHA
  43.         {
  44.             //Método para gerar hash SHA256 tendo retorno e parâmetro do tipo string
  45.             public static string GenerateSHA256String(string ArquivoEntrada)
  46.             {
  47.                 SHA256 sha256 = SHA256Managed.Create();     //Cria uma instância para SHA256
  48.                 byte[] bytes = File.ReadAllBytes(ArquivoEntrada);   //Lê os bytes do arquivo
  49.                 byte[] hash = sha256.ComputeHash(bytes);    //Calcula o hash e armazena em um vetor de bytes
  50.                 return GetStringFromHash(hash);     //Retorna chamando o método de conversão de vetor de bytes para string
  51.             }
  52.  
  53.             //Método para gerar hash SHA384 tendo retorno e parâmetro do tipo string
  54.             public static string GenerateSHA384String(string ArquivoEntrada)
  55.             {
  56.                 SHA384 sha384 = SHA384Managed.Create();     //Cria uma instância para SHA384
  57.                 byte[] bytes = File.ReadAllBytes(ArquivoEntrada);   //Lê os bytes do arquivo
  58.                 byte[] hash = sha384.ComputeHash(bytes);    //Calcula o hash e armazena em um vetor de bytes
  59.                 return GetStringFromHash(hash);     //Retorna chamando o método de conversão de vetor de bytes para string
  60.             }
  61.  
  62.             //Método para gerar hash SHA512 tendo retorno e parâmetro do tipo string
  63.             public static string GenerateSHA512String(string ArquivoEntrada)
  64.             {
  65.                 SHA512 sha512 = SHA512Managed.Create();     //Cria uma instância para SHA512
  66.                 byte[] bytes = File.ReadAllBytes(ArquivoEntrada);   //Lê os bytes do arquivo
  67.                 byte[] hash = sha512.ComputeHash(bytes);    //Calcula o hash e armazena em um vetor de bytes
  68.                 return GetStringFromHash(hash);     //Retorna chamando o método de conversão de vetor de bytes para string
  69.             }
  70.  
  71.             //Converte os vetores de bytes das funções de hash para string
  72.             private static string GetStringFromHash(byte[] hash)
  73.             {
  74.                 StringBuilder result = new StringBuilder(); //Cria uma instância para StringBuilder
  75.                 for (int i = 0; i < hash.Length; i++)   //Percorre o vetor de bytes
  76.                 {
  77.                     result.Append(hash[i].ToString("X2"));  //Converte os bytes para char
  78.                 }
  79.                 return result.ToString();   //Retorna o hash em forma de string
  80.             }
  81.  
  82.         }
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement