Avançar para o conteúdo principal

Encriptar e Desencriptar

Com o .Net podemos facilmente codificar e descodificar mensagens através do namespace Cryptography.
Neste post vamos estudar um programa que encripta um texto com base numa palavra passe e posteriormente descodifica a mensagem.

Começamos por criar uma função para encriptar:
string codifica(string mensagem, string ppasse)
{
  //este vector vai ficar com a mensagem encriptada
  byte [] mensagem_codificada;
 //vamos utilizar codificação UTF8
  System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
  // Vamos utilizar o algoritmo MD5 para fazer o Hash da palavra passe
  MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
  //Agora podemos então fazer o hash da palavra passe
  byte[] TDESChave = HashProvider.ComputeHash(UTF8.GetBytes(ppasse));
  //De seguida vamos escolher o algoritmo de encriptação
  TripleDESCryptoServiceProvider TDESAlgoritmo = new TripleDESCryptoServiceProvider();

  //Configuração do algoritmo
  TDESAlgoritmo.Key = TDESChave;
  TDESAlgoritmo.Mode = CipherMode.ECB;
  TDESAlgoritmo.Padding = PaddingMode.PKCS7;


  //Para podermos converter a string primeiro temos de a converter para um vector
  byte[] dados = UTF8.GetBytes(mensagem);
  //Finalmente podemos codificar a mensagem
  try{
    ICryptoTransform codificador = TDESAlgoritmo.CreateEncryptor();
    mensagem_codificada = codificador.TransformFinalBlock(dados,0,dados.Length);
  }finally{
    //Agora limpamos a casa
    TDESAlgoritmo.Clear();
    HashProvider.Clear();
  }
  //Só falta devolver a mensagem codificada
  return Convert.ToBase64String(mensagem_codificada);
}

Para descodificar o processo é muito parecido e aqui fica o código:

string descodifica(string mensagem, string ppasse)
{
   //este vector vai ficar com a mensagem desencriptada
   byte[] mensagem_descodificada;
   //Codificaçao utilizada
   System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
   // Vamos utilizar o algoritmo MD5 para fazer o Hash da palavra passe
   MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
   //Agora podemos então fazer o hash da palavra passe
  byte[] TDESChave = HashProvider.ComputeHash(UTF8.GetBytes(ppasse));

  //o algoritmo de encriptação
  TripleDESCryptoServiceProvider TDESAlgoritmo= new TripleDESCryptoServiceProvider();

   //Configuração do algoritmo
    TDESAlgoritmo.Key = TDESChave;
    TDESAlgoritmo.Mode = CipherMode.ECB;
    TDESAlgoritmo.Padding = PaddingMode.PKCS7;
    //Para podermos converter a string primeiro temos de a converter para um vector
    byte[] dados = Convert.FromBase64String(mensagem);
    //Vamos descodificar a amensagem
    try
    {
          ICryptoTransform descodificador = TDESAlgoritmo.CreateDecryptor();
          mensagem_descodificada = descodificador.TransformFinalBlock(dados, 0, dados.Length);     
    }
    finally
    {
                // Por fim limpeza geral
                TDESAlgoritmo.Clear();
                HashProvider.Clear();
     }
     // Devolver a mensagem
     return UTF8.GetString(mensagem_descodificada );
}

E a interface é esta beleza

Comentários

Mensagens populares deste blogue

Upgrade do Windows Home para Pro sem formatar

 Há algum tempo que tentava fazer o upgrade do meu Windows 10 da versão Home para a versão Pro, mas chegava sempre a um ponto em que me era solicitado para formatar o sistema e não estava para isso. Finalmente conseguinte seguindo estes passos: - seguinte estes passos  utilizei uma das chaves genéricas para o Windows 10 Pro e fui a Settings > Update & Security > Activation > Change the product key; - após inserir uma das chaves o Windows instala as funcionalidades Pro e pede para reiniciar; - agora tem o Windows Pro mas não está ativado, assim fui ao site urcdkeys  onde comprei uma chave para o Windows Pro por menos de €20; - com essa chave voltei a funcionalidade Change the product key e ativei o Windows; - e pronto, Windows Pro ativado sem formatar ou reinstalar. Importante : eu não tenho nada a ver com o site urcdkeys por isso a vossa experiência pode correr de forma diferente da minha.

Vamos fazer um carro com o Unity 3D

Neste artigo vamos fazer um carro, simples, com o Unity 3D. A ideia é utilizar o motor de física do Unity 3D para simular o comportamento do carro. Os passos a seguir são: [1] - Criar um projeto novo

Tem troco

Para hoje um pequeno programa que dá troco, bem dar não dá mas calcula o troco a dar em função das moedas disponíveis. Neste projeto vamos utilizar o novo Visual Studio 2012. Como era de se esperar vamos iniciar um projeto novo: Agora adicionamos os seguintes elementos:  - um botão para calcular as moedas a dar de troco  - um botão para repor o número de moedas iniciais disponíveis  - uma textbox para introduzir o valor a pagar  - uma textbox para introduzir o valor entregue  - umas labels para informar o utilizador do que deve introduzir e outra para mostrar o troco  - por fim uma grelha para mostrar os valores das moedas e as quantidades disponíveis de cada uma. A janela principal do programa fica assim: Agora o código, primeiro o evento load do formulário, neste vamos definir os valores das moedas e as respetivas quantidades Para guardar estes valores vamos necessitar de uma variável definida ao nível do formulário, logo abaixo da definição da class: Public Class Form1     Public mo