Olá! Friday, 08 de December de 2023.



Dicas CódigoFonte.net
Friday, 29 de April de 2005

Utilizando Cryptography Application Block

Você algum dia já precisou utilizar algum tipo de criptografia em um site que você desenvolveu. Provavelmente você perdeu algum tempo colocando a sua criptografia para funcionar seja no Visual Studio 6.0 ou no .Net. Agora, a Microsoft criou a Enterprise Library, que além de resolver muitos problemas, como por exemplo, acesso a dados e tratamento de exceções, resolve também boa parte do trabalho que você tem com a criptografia das suas aplicações.

Antes de começarmos a descrever a utilização do Cryptography Application Block, vamos discutir alguns termos que vamos tratar nesse artigo.

Microsoft patterns & practices: Como o próprio nome diz, é uma coletânea das melhores práticas e padrões criados pela Microsoft para facilitar a vida dos desenvolvedores que utilizam as plataformas dessa empresa. Mais informações em http://www.microsoft.com/resources/practices/default.mspx

Enterprise Library: Uma coletânea com algumas aplicações que podem ser reutilizadas e estendidas para desenvolvimento na arquitetura .Net. Mais informações em http://msdn.microsoft.com/library/ en-us/dnpag2/html/entlib.asp Download da versão de Janeiro de 2005 em http://www.microsoft.com/downloads/ details.aspx?FamilyId=0325B97A-9534-4349-8038-D56B38EC394C&displaylang=en

Cryptography Application Block: Bloco de aplicação auxilia o desenvolvedor que deseje utilizar criptografia simétrica e / ou algoritmos Hash em suas aplicações. Mais informações em http://www.microsoft.com/downloads/ details.aspx?FamilyId=0325B97A-9534-4349-8038-D56B38EC394C&displaylang=en

Criptografia Simétrica: A criptografia simétrica utiliza a mesma chave para encriptar e decriptar uma mensagem. Um exemplo de utilização de chave simétrica poderia ser o seguinte.

Digamos que você precisa acessar um site de FTP com um usuário e senha diferente do "anonymous". Vamos supor também que o login e a senha desse usuário estão guardados em uma tabela no seu banco de dados. Neste caso você pode utilizar a criptografia simétrica para proteger o login e senha do seu usuário FTP. Você pode criptografar simetricamente os dados desejados e guardá-los de forma segura no banco. Quando você necessitar utilizar o usuário do FTP você poderá obter os dados criptografados, descriptografá-los e enviar para a sua classe de manipulação de FTP.

Hash: É um algorítmo matemático que converte uma mensagem de qualquer tamanho em uma cadeia de caracteres única de tamanho fixo conhecida como "Message Digest" (Mensagem compilada), que representa a mensagem original. Uma vez que a mensagem é compilada, ela não retornará mais a mensagem original.

Um exemplo comum é quando você deseja comparar a senha de um determinado usuário com uma que esteja salva em banco de dados. Você não precisa descriptografar a senha do banco para saber se ela é idêntica à informada pelo usuário. Basta criptografar ambas com o mesmo algoritmo hash para saber se são idênticas.

Visto todos esses conceitos, está na hora de por a mão na massa. Primeira coisa a fazer é baixar e instalar o Enterprise Library (ver links acima e os helps disponibilizados pela própria Microsoft).

1. Vamos começar. Abra o Enterprise Library Configuration, pela instalação padrão fica em Microsoft patterns & practices » Enterprise Library.



3. Crie uma nova aplicação e nomeie-a conforme desejar.

Clique para ver a imagem em tamanho real

4. Com o botão direito clique na sua aplicação, neste caso Application1, depois passe o mouse sobre "New" e por último clique em "Cryptography Application Block".

Clique para ver a imagem em tamanho real

5. Com o Cryptography Application Block criado, vamos criar o nosso provedor de Hash. Clique com o botão direito em Hash Provider, passe o mouse sobre "New" e clique em "HashAlgorithm Provider".

Clique para ver a imagem em tamanho real

9. Na tela que abre em decorrência dessa ação, escolha o provedor que melhor irá lhe servir. No caso irei utilizar o SHA1Managed.



11. De um nome para o seu provedor, no meu caso utilizei MeuHash.
12. Para criar a criptografia simétrica faça o seguinte conjunto de instruções. Clique com o botão direito sobre Symmetric Providers, vá em New e Clique em "Symmetric AlgoithmProvider".

Clique para ver a imagem em tamanho real

14. Na tela que abre em decorrência dessa ação, escolha o provedor que melhor irá lhe servir. No caso irei utilizar o RC2CryptoServiceProvider.



16. Antes de qualquer coisa faça um backup do web.config do seu projeto ASP.Net lembre-se backup nunca é demais. Salve a sua aplicação Enterprise Library com o nome de web.config na pasta raiz do seu projeto ASP.Net. Com isso você também criará um arquivo chamado securityCryptographyConfiguration.config.


Pronto, você já pode fechar a Enterprise Library.

1. Abra a sua solução no Visual Studio .Net.
2. Adicione duas referências ao seu projeto, uma é a Microsoft.Practices.EnterpriseLibrary.Security e a outra é Microsoft.Practices.EnterpriseLibrary.Configuration. Ambas podem ser encontradas em C:\Arquivos de programas\Microsoft Enterprise Library\bin, no caso de você ter utilizado a instalação padrão.
3. Vamos agora criar uma página básica para testar a criptografia e descriptografia da nossa aplicação.
4. A página poderá ficar mais ou menos parecida com essa. Não é bonita, mas vai servir por enquanto.



Visto isso, vamos adicionar os códigos necessários.

1. Faça o import da Microsoft.Practices.EnterpriseLibrary.Security.Cryptography. Para isso, utilize o comando: Imports Microsoft.Practices.EnterpriseLibrary.Security.Cryptography
Na criptografia simétrica

3. No botão Criptografar, utilize o seguinte código:
Private Sub btnCriptografar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCriptografar.Click Me.txtCriptografado.Text = Cryptographer.EncryptSymmetric("MeuSymmetricProvider", Me.txtDescriptografado.Text) End Sub

5. No botão Descriptografar, utilize o seguinte código:
Private Sub btnDescriptografar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDescriptografar.Click Me.txtDescriptografado.Text = Cryptographer.DecryptSymmetric("MeuSymmetricProvider", Me.txtCriptografado.Text) End Sub

8. No Hash
No botão gerar Hash, vamos utilizar este "complexo" comando.
Private Sub btnGerarHash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGerarHash.Click Me.txtHashGerado.Text = Cryptographer.CreateHash("MeuHash", Me.txtTextoPuro.Text) End Sub

10. No botão Comparar Hash, basta essas poucas linhas.
Private Sub btnCompararHashs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCompararHash.Click If Cryptographer.CompareHash("MeuHash", Me.txtTextoPuro.Text, Me.txtHashGerado.Text) Then Me.lblResultadoComparacao.Text = "Hashs são idênticos" Else Me.lblResultadoComparacao.Text = "Hashs são diferentes" End If End Sub

Agora brinque a vontade com a suas criptografias e aproveite para explorar o Enterprise Library.

Por: Avelino Ferreira Gomes Filho

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010