Advertisement
amv1991

SHA256 e SHA512

Mar 22nd, 2020
251
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.14 KB | None | 1 0
  1. using System;
  2. using System.Security.Cryptography;     //Para usar as funções Hash
  3. using System.Text;
  4.  
  5. namespace ConsoleApp1
  6. {
  7.     class Program
  8.     {
  9.         /*
  10.          *          -O programa abaixo é uma implementação dos algoritmos de hash (para string)
  11.          *              SHA1, SHA256, SHA384 E SHA512;
  12.          *          -Esse tipo de algoritmo é geralmente utilizado para verificação de senhas;
  13.          *          -Pra quem quiser analisar se o programa está funcionando corretamente, basta comparar
  14.          *              os hashes com os desse serviço online https://convertstring.com/pt_PT;
  15.          *          -Basta copiar o código, colar em um Console Application e compilar;
  16.          *          
  17.          *          Criado por: Andrew Vargas
  18.          *          Facebook: https://www.facebook.com/andrewvargas1991
  19.          *          PS: Pra quem tá com preguiça de copiar e compilar, hahaha, baixe no link
  20.          *              https://mega.nz/#!2tBjxAYB!6z0ue-WQkWWQ5jp1nrHsMP_K53T3m5ooqDwlHu7Zdzo
  21.          */
  22.  
  23.         static void Main(string[] args)
  24.         {
  25.             Console.Write("Digite alguma coisa: ");
  26.             string palavra = Console.ReadLine();    //Lê a string a ser calculado o hash
  27.  
  28.             string sha1 = SHA.GerarSHA1(palavra);  //Chama o método hash SHA1
  29.             string sha256 = SHA.GerarSHA256(palavra);  //Chama o método hash SHA256
  30.             string sha384 = SHA.GerarSHA384(palavra);  //Chama o método hash SHA384
  31.             string sha512 = SHA.GerarSHA512(palavra);  //Chama o método hash SHA512
  32.  
  33.             Console.WriteLine("\nSHA1 de {0}:\n{1}\n", palavra, sha1);  //Imprime SHA1
  34.             Console.WriteLine("\nSHA256 de {0}:\n{1}\n", palavra, sha256);  //Imprime SHA256
  35.             Console.WriteLine("\nSHA384 de {0}:\n{1}\n", palavra, sha384);  //Imprime SHA384
  36.             Console.WriteLine("SHA512 de {0}:\n{1}", palavra, sha512);  //Imprime SHA512
  37.  
  38.             Console.WriteLine("\nAperte uma tecla para sair...");
  39.             Console.ReadKey();
  40.         }
  41.  
  42.         public static class SHA     //Cria uma classe chamada SHA
  43.         {
  44.             //Método para gerar hash SHA1 tendo retorno e parâmetro do tipo string
  45.             public static string GerarSHA1(string String_de_Entrada)
  46.             {
  47.                 SHA1 sha1 = SHA1Managed.Create();     //Cria uma instância para SHA1
  48.                 byte[] bytes = Encoding.UTF8.GetBytes(String_de_Entrada);   //Converte a string para bytes
  49.                 byte[] hash = sha1.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 SHA256 tendo retorno e parâmetro do tipo string
  54.             public static string GerarSHA256(string String_de_Entrada)
  55.             {
  56.                 SHA256 sha256 = SHA256Managed.Create();     //Cria uma instância para SHA256
  57.                 byte[] bytes = Encoding.UTF8.GetBytes(String_de_Entrada);   //Converte a string para bytes
  58.                 byte[] hash = sha256.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 SHA384 tendo retorno e parâmetro do tipo string
  63.             public static string GerarSHA384(string String_de_Entrada)
  64.             {
  65.                 SHA384 sha384 = SHA384Managed.Create();     //Cria uma instância para SHA384
  66.                 byte[] bytes = Encoding.UTF8.GetBytes(String_de_Entrada);   //Converte a string para bytes
  67.                 byte[] hash = sha384.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.             //Método para gerar hash SHA512 tendo retorno e parâmetro do tipo string
  72.             public static string GerarSHA512(string String_de_Entrada)
  73.             {
  74.                 SHA512 sha512 = SHA512Managed.Create();     //Cria uma instância para SHA512
  75.                 byte[] bytes = Encoding.UTF8.GetBytes(String_de_Entrada);   //Converte a string para bytes
  76.                 byte[] hash = sha512.ComputeHash(bytes);    //Calcula o hash e armazena em um vetor de bytes
  77.                 return GetStringFromHash(hash);     //Retorna chamando o método de conversão de vetor de bytes para string
  78.             }
  79.  
  80.             //Converte os vetores de bytes das funções de hash para string
  81.             private static string GetStringFromHash(byte[] hash)
  82.             {
  83.                 StringBuilder result = new StringBuilder(); //Cria uma instância para StringBuilder
  84.                 for (int i = 0; i < hash.Length; i++)   //Percorre o vetor de bytes
  85.                 {
  86.                     result.Append(hash[i].ToString("X2"));  //Converte os bytes para char
  87.                 }
  88.                 return result.ToString();   //Retorna o hash em forma de string
  89.             }
  90.         }
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement