Desenvolvimento - ASP. NET

Encriptando senhas com ASP.NET

Neste artigo irei mostrar como podemos criptografar dados com o ASP.NET.

por Rodrigo Kono



Não importa o quando, onde o local e a razão quando falamos de segurança hoje em dia. Ela tem que estar em todo o lugar em nossas aplicações e projetos. Por isso quando trabalhamos com certos tipos de dados é aconselhável sempre proteger e criptografar antes de inserir esses dados no banco de dados ou trafegá-los pela rede.

Já vi muitas pessoas fazendo criptografias de dados em ASP.NET utilizando a namespace System.Security.Cryptography e assim por diante criando uma instância do algoritmo de criptografia para depois poder realizar a operação. Sem contar que teremos que informar os parâmetros do método ComputeHash.
Funciona perfeitamente.

Bem, você deve me perguntar: qual é o problema então?
Nenhum, desde que saibamos que existe uma forma mais simples de poder realizar a criptografia de dados com asp.net.
Lembrando que a forma mais simples não é a menos segura. Estamos utilizando as classes do .NET FrameWork.

Neste artigo irei mostrar como podemos criptografar dados com o ASP.NET.
Só para que possamos recordar um pouco, vejamos abaixo um dos dois algoritmos mais precisos para encriptação:

SHA1 (Secure Hash Algorithm - Algoritmo de Resumo Seguro).
Este algoritmo recebe como entrada um documento qualquer sob a forma digital com um tamanho de até 2 elevado a 64 bits (18.446.744.073.709.551.616 bits) ou 2.305.843.009.213.693.952 "Bytes" ou caracteres, e gera como saída um resumo de 160 bits ou 20 Bytes. Ele é um pouco mais lento que o MD5, mas em compensação mais difícil de ser quebrado.

MD5 (Message Digest)
Ele produz uma saída de 128 bits ou 16 Bytes. Já se tem notícia de uma vulnerabilidade mas por enquanto ele não foi ainda quebrado. Ele é mais rápido que o SHA-1.

Vamos à prática!

Crie um WebForm e adicione nele um TextBox (txtSenha), um Button(btnCrip) e dois Labels(lblSHA1, lblMD5).

Feito isso, dê um duplo clique no botão(btnCrip) para utilizarmos a ação do evento Click. Ou seja, o nosso texto será codificado ao clicar o botão. Mas antes informe a namespace que iremos utilizar:

Imports System.Web.Security

Dentro da Subrotina criada, faça com que o label específico receba a string codificada. Iremos usar da classe FormsAuthentication a função HashPasswordForStoringInConfigFile. Essa função codifica-se o texto informado através do tipo do algoritmo informado (SHA1 ou MD5).

Segue o código abaixo:

Private Sub btoCrip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles btoCrip.Click
        lblSHA1.Text = "SHA1: " & 
FormsAuthentication.HashPasswordForStoringInConfigFile(txtSenha.Text, "SHA1")

        lblMD5.Text = "MD5: " & 
FormsAuthentication.HashPasswordForStoringInConfigFile(txtSenha.Text, "MD5")
End Sub

Note que informei qual é o algoritmo a ser usado dentro das "".

Finalizado, compile e veja o resultado no browser.

Como viram, de uma forma simples, podemos encriptar nossos dados na web utilizando a classe FormsAuthentication. Mas lembrando que esse tipo de criptografia é válida apenas para dados trabalhados com ASP.NET.

Espero que seja útil a você.

Abraços.

Rodrigo Kono

Rodrigo Kono

Rodrigo Kono - Trabalha com programação para web a 8 anos, é MVP da Microsoft em ASP.NET, MSP Mentor, MCP.NET 2.0, MCTS [WEB / SQL], líder do grupo de usuários DevGoiás .NET (www.devgoias.net), bacharel em Ciência da Computação, Mestrando na Faculdade de Engenharia Elétrica da UFG, desenvolve serviços na Secretaria da Fazenda do Estado de Goiás, é palestrante e membro do board da INETA Brasil, escreve e produz vídeos para o site Linha de Código, realizou o 1º treinamento de VB.NET 2.0 (windows forms) e ASP.NET 2.0 de Goiás. Já esteve palestrando em várias cidades do país, entre elas Campo Grande, Goiânia, São Paulo, Porto Alegre, Porto Velho e Curitiba, totalizando mais de 8500 pessoas nos últimos cinco anos. Trabalha a um bom tempo para disseminação e divulgação da plataforma .NET com treinamentos, reuniões e palestras. O seu trabalho pode ser acompanhado em seu blog: http://kono.spaces.live.com.