Criptografia VB.NET
Autor: Rodrigo Ferro | Publicado: 2011-02-19T20:08:00-02:00

Ola meu povo, hoje vou mostrar como podemos criptografar dados no VB.NET...
Crie a seguinte classe

Imports&nbsp;System.Text
Imports&nbsp;System.Security.Cryptography
 
Public&nbsp;Class&nbsp;cls_crypto
 
&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Shared&nbsp;TripleDES&nbsp;As&nbsp;New&nbsp;TripleDESCryptoServiceProvider
&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Shared&nbsp;MD5&nbsp;As&nbsp;New&nbsp;MD5CryptoServiceProvider
 
&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Definição&nbsp;da&nbsp;chave&nbsp;de&nbsp;encriptação/desencriptação&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Const&nbsp;key&nbsp;As&nbsp;String&nbsp;=&nbsp;"SENHA_DE_SUA_PREFERENCIA"
 
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;summary&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;Calcula&nbsp;o&nbsp;MD5&nbsp;Hash&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;/summary&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;param&nbsp;name="value"&gt;Chave&lt;/param&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Shared&nbsp;Function&nbsp;MD5Hash(ByVal&nbsp;value&nbsp;As&nbsp;String)&nbsp;As&nbsp;Byte()
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Converte&nbsp;a&nbsp;chave&nbsp;para&nbsp;um&nbsp;array&nbsp;de&nbsp;bytes&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;byteArray()&nbsp;As&nbsp;Byte&nbsp;=&nbsp;ASCIIEncoding.UTF8.GetBytes(value)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;MD5.ComputeHash(byteArray)
 
&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function
 
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;summary&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;Encripta&nbsp;uma&nbsp;string&nbsp;com&nbsp;base&nbsp;em&nbsp;uma&nbsp;chave&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;/summary&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;param&nbsp;name="stringToEncrypt"&gt;String&nbsp;a&nbsp;encriptar&lt;/param&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Function&nbsp;Encrypt(ByVal&nbsp;stringToEncrypt&nbsp;As&nbsp;String)&nbsp;As&nbsp;String
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Definição&nbsp;da&nbsp;chave&nbsp;e&nbsp;da&nbsp;cifra&nbsp;(que&nbsp;neste&nbsp;caso&nbsp;é&nbsp;Electronic&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Codebook,&nbsp;ou&nbsp;seja,&nbsp;encriptação&nbsp;individual&nbsp;para&nbsp;cada&nbsp;bloco)&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TripleDES.Key&nbsp;=&nbsp;cls_crypto.MD5Hash(key)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TripleDES.Mode&nbsp;=&nbsp;CipherMode.ECB
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Converte&nbsp;a&nbsp;string&nbsp;para&nbsp;bytes&nbsp;e&nbsp;encripta&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Buffer&nbsp;As&nbsp;Byte()&nbsp;=&nbsp;ASCIIEncoding.ASCII.GetBytes(stringToEncrypt)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;Convert.ToBase64String _
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (TripleDES.CreateEncryptor(). _TransformFinalBlock(Buffer, 0, Buffer.Length))
 
&nbsp; &nbsp; &nbsp; &nbsp; Catch&nbsp;ex&nbsp;As&nbsp;Exception
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show(ex.Message,&nbsp;My.Application.Info.Title,&nbsp;_
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxButtons.OK,&nbsp;MessageBoxIcon.Error)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;String.Empty
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Try
 
&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function
 
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;summary&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;Desencripta&nbsp;uma&nbsp;string&nbsp;com&nbsp;base&nbsp;em&nbsp;uma&nbsp;chave&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;/summary&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;'''&nbsp;&lt;param&nbsp;name="encryptedString"&gt;String&nbsp;a&nbsp;decriptar&lt;/param&gt;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Function&nbsp;Decrypt(ByVal&nbsp;encryptedString&nbsp;As&nbsp;String)&nbsp;As&nbsp;String
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Definição&nbsp;da&nbsp;chave&nbsp;e&nbsp;da&nbsp;cifra&nbsp;
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;encryptedString&nbsp;=&nbsp;String.Empty&nbsp;Then&nbsp;Return&nbsp;String.Empty
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TripleDES.Key&nbsp;=&nbsp;cls_crypto.MD5Hash(key)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TripleDES.Mode&nbsp;=&nbsp;CipherMode.ECB
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Converte&nbsp;a&nbsp;string&nbsp;encriptada&nbsp;para&nbsp;bytes&nbsp;e&nbsp;decripta&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Buffer&nbsp;As&nbsp;Byte()&nbsp;=&nbsp;Convert.FromBase64String(encryptedString)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;ASCIIEncoding.ASCII.GetString _
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (TripleDES.CreateDecryptor(). _TransformFinalBlock(Buffer, 0, Buffer.Length))
 
&nbsp; &nbsp; &nbsp; &nbsp; Catch&nbsp;ex&nbsp;As&nbsp;Exception
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show(ex.Message,&nbsp;My.Application.Info.Title,&nbsp;_
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxButtons.OK,&nbsp;MessageBoxIcon.Error)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;String.Empty
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Try
 
&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function
 
End&nbsp;Class&nbsp;
Nesse cenário criamos a classe, agora em um form &nbsp;vamos chamar a classe.

Dim&nbsp;cripto&nbsp;As&nbsp;New&nbsp;cls_cryptoTextbox.text = cripto.Encrypt("TEXTO_A_SER_CRIPTOGRAFADO")&nbsp;E para descriptografar Messagebox.show(cripto.Decrypt(Textbox1.text))&nbsp;Abraços&nbsp;