Criptografia VB.NET

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

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

Nesse cenário criamos a classe, agora em um form  vamos chamar a classe.

Dim cripto As New cls_crypto
Textbox.text = cripto.Encrypt("TEXTO_A_SER_CRIPTOGRAFADO")
 
E para descriptografar Messagebox.show(cripto.Decrypt(Textbox1.text))
 
Abraços 

6 comentários:

Jonathan Stecker disse...

Show!

Unknown disse...

O exemplo foi ótimo, mas como se proteger dados no NET uma vez que ele pode ser decompilado?

Digo isso porque ao decompilar um EXE.net você terá acesso a todas as "Senhas" da chave de criptografia, assim não há nenhuma segurança mesmo, pois qualquer criptografia em Net poderia ser desfeita.

Não consigo ver como estão usando essa "deplorável .net" sem proteção, pois dizer que ofuscadores resolvem é "tapar sol com peneira".

Já cansei de pesquisar, participar de fóruns, mas poucas pessoas demonstram interesse ou preocupação com isso, talvez porque os desenvolvedores de softwares comerciais não usem dot net.

Até comprei o VS 2008, mas por esse motivo ainda continuo no bom VB6. meu medo é só de ele não funcionar mais quando sair o Windows 8, como disse a Microsoft.

Rodrigo Ferro disse...

ok ok, posso lhe passar uma DLL em C# para voce descriptografar ??? ela foi compilada e Ofuscada no VS2008, e o dono dela ja tem umas 15mil pessoas usando ela !

Esse é so um exemplo de como ofuscadores podem ajudar nessa tarefa !

Unknown disse...

Ola, gostei do post, mas da erro de ocnversao quando descriptografa

Unknown disse...

Gostei do Post

Unknown disse...

Ótimo, obrigado.
Funcionou perfeito.
Agora é ofuscar a chave para não aparecer em algum editor hexa

Postar um comentário