Imprimir Post

Caminho Rápido – Encriptando e Decriptando senhas com Classe Utilitária C#

Resumo:

O objetivo desta publicação é ensinar como Encriptar (Encrypt) e Decriptar (Decrypt) senhas (password) comumente inseridas em um processo de autenticação do usuário para uma Aplicação (logon), através de uma Classe Utilitária C#, à partir da ferramenta de desenvolvimento Microsoft Visual Studio.

O guia será apresentado de maneira a minimizar a parte teórica ao essencial e elevar a parte prática até a concretização do objetivo.

Palavras-chaves:

Visual, Studio, Classe, Encriptar, Decriptar, C#.

Texto:

Adendo

Para realização das tarefas referentes ao objetivo do post, foram utilizados os seguintes Programas:

  • Windows 10 Pro;
  • Microsoft Visual Studio Community 2015 Ultimate (Update 3).

A única configuração realizada após a instalação dos programas acima, foi manter o Microsoft Visual Studio sendo executado como usuário Administrador do Sistema Operacional, a fim de evitar maiores problemas.

Mãos à Obra

Tela Inicial do Microsoft Visual Studio Community 2015 (Update 3):

Encriptando e Decriptando - Microsoft Visual Studio 2015 Community - Tela Inicial

Microsoft Visual Studio 2015 Community – Tela Inicial

Primeiramente deve-se criar uma aplicação, no exemplo será Console Application:

Console Application - Relembre

Tela ao criar uma aplicação do tipo Console Application:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Criação de Novo Projeto

Microsoft Visual Studio Community 2015 – Criação de Novo Projeto

Nota-se que ao criar o Projeto Console Application, o Microsoft Visual Studio se encarrega automaticamente de gerar e disponibilizar uma classe chamada Program.cs.  Por hora deve-se ignorar esta classe.

Criando a Classe Encryption

À partir do projeto anteriormente criado, localizar e clicar com o botão direito em LinkSinergia.ConsoleApplication, em seguida selecionar Add e clicar na opção Class…:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Criação de Classe

Microsoft Visual Studio Community 2015 – Criação de Classe

Tela após clicar na opção Class…:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Janela Central

Microsoft Visual Studio Community 2015 – Janela Central

A janela central está intitulada como Add New Item – LinkSinergia.ConsoleApplication.

Contendo 3 áreas divididas na vertical e 1 área dividida na horizontal, na primeira área à esquerda nomeada como: Installed, clicar na opção Visual C# Items. Em seguida na área central, localizar e clicar na opção: Class. Por fim, na área que representa a divisão horizontal, manter as informações de acordo com a imagem abaixo e clicar no botão Add:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Janela Central

Microsoft Visual Studio Community 2015 – Janela Central

Vale destacar as configurações:

  • Name: determina-se o nome da Classe.

Tela após clicar no botão Add:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Tela após Criação da Classe

Microsoft Visual Studio Community 2015 – Tela após Criação da Classe

Alterando a Classe Encryption

Partindo da classe Encryption, deve-se clicar e modificar a área da classe, alterando-a para o seguinte código:

Tela ao colar o código:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Tela após Alteração da Classe

Microsoft Visual Studio Community 2015 – Tela após Alteração da Classe

Por fim, deve-se salvar a classe Encryption e suas alterações clicando no botão Salvar. Tela com a confirmação positiva (ver rodapé da janela) ao clicar no botão Salvar:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 – Tela após Salvar o Projeto

Microsoft Visual Studio Community 2015 – Tela após Salvar o Projeto

Alterando a classe Program

O próximo passo é retornar a classe Program. Na área à direita nomeada como: Solution Explorer, deve-se clicar duas vezes (2x) sobre Program.cs, alterando-a para o seguinte código:

Tela ao colar o código:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 - Tela após Alteração da Classe

Microsoft Visual Studio Community 2015 – Tela após Alteração da Classe

Por fim, deve-se salvar a classe Program e suas alterações clicando no botão Salvar. Tela com a confirmação positiva (ver rodapé da janela) ao clicar no botão Salvar:

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 – Tela após Salvar o Projeto

Microsoft Visual Studio Community 2015 – Tela após Salvar o Projeto

Finalizando o exemplo, resta apenas executar a Aplicação, deve-se então clicar no botão Start Debugging (F5):

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 – Execução da Aplicação

Microsoft Visual Studio Community 2015 – Execução da Aplicação

Tela ao clicar no botão Start Debugging (F5):

Encriptando e Decriptando - Microsoft Visual Studio Community 2015 – Execução da Aplicação (Janela de Console)

Microsoft Visual Studio Community 2015 – Execução da Aplicação (Janela de Console)

Considerações Finais:

Esta publicação visa ensinar como Encriptar (Encrypt) e Decriptar (Decrypt) senhas (password) comumente inseridas em um processo de autenticação do usuário para uma Aplicação (logon), através de uma Classe Utilitária C#, à partir da ferramenta de desenvolvimento Microsoft Visual Studio.

Vale destacar que:

  • Dentro da classe Encryption, Crypto é uma classe fornecida pelo .NET Framework que garante a utilização dos métodos createEncryptPassword e checkEncryptPassword:
    • createEncryptPassword: tem a responsabilidade de encriptar senhas.
    • checkEncryptPassword: tem a responsabilidade de verificar se as senhas recebidas do logon se equivalem com a senha encriptada.
  • A sequência de passos apresentados na execução da aplicação visa simular a entrada do usuário com seu Login e Senha (Senha original). Em seguida a Senha (Senha original) é encriptada, representando como estaria armazenada em um banco de dados por exemplo (Senha encriptada). Ao final a senha encriptada é comparada com a senha original para verificação de equivalência ou seja:
  • Se a tradução de “AKnO3KXCkxR/j3Ig8K1Q4HWBPj+kBagks3ELzOVVtfZ6+b6rBMaeKoIJUH0/1ttI3g==” resultar em “123mudar”, o Logon será realizado com sucesso, caso contrário o usuário receberá uma mensagem de senha inválida.

Observação: A utilização da classe Crypto já possui em seus métodos de criptografia a vantagem da criação de um Salt juntamente com a Hash gerada, evitando este trabalho manual por parte do desenvolvedor, tendo como descrição segundo a Microsoft:

The password hash is generated with the RFC 2898 algorithm using a 128-bit salt, a 256-bit subkey, and 1000 iterations. The format of the generated hash bytestream is {0x00, salt, subkey}, which is base-64 encoded before it is returned.

Referências Bibliográficas:

https://msdn.microsoft.com/en-us/library/system.web.helpers.crypto.hashpassword(v=vs.111).aspx

Sobre o autor

Thiago Richard Vanicore

Thiago Richard Vanicore formou-se em análise e desenvolvimento de sistemas, possui certificação ITIL Foundation V2 e entre seus conhecimentos estão: ASP .Net (WebForms/MVC5/Web API) C#, HTML5, Html/XHtml, CSS3, JQuery, JQuey Mobile, JavaScript, Xml, Ajax, Json, Microsoft SqlServer, MySql, Firebird, Azure, Visual Studio Online, Scrum, UML, CRM, Quality Assurance, CTI (Computer Telephony Integration) MPSBR (Melhoria de Processos do Software Brasileiro).

Link permanente para este artigo: http://linksinergia.com.br/2017/02/08/caminho-rapido-encriptando-e-decriptando-senhas-com-classe-utilitaria-c/