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 String) As 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 String) As 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 String) As 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:
Show!
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.
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 !
Ola, gostei do post, mas da erro de ocnversao quando descriptografa
Gostei do Post
Ótimo, obrigado.
Funcionou perfeito.
Agora é ofuscar a chave para não aparecer em algum editor hexa
Postar um comentário