teckV Posted May 18, 2006 at 10:31 AM Report Share #28024 Posted May 18, 2006 at 10:31 AM boas, vou mostrar uma classe para encryptar dados com TripleDES... podem criar uma classe dot.Net e usa-la em todas as apps que necessitem de encriptação... VB.NET no Visual Studio 2003 - dotNet v1.1 NameSpaces usados Imports System Imports System.IO Imports System.Text Imports System.Security.Cryptography criam uma classe tipo VB (que vai ficar numa Assembly DotNet [DLL]) Public Class TripleDES End Class esta classe vai ter dois métodos: Encrypt e Desencrypt Metodo Encrypt.. recebe uma string de plainText e converte num Array de Bytes encryptados com o TripleDES... retorna um Array de Bytes Public Function Encrypt(ByVal plainText As String) As Byte() ' Declarar um objecto UTF8Encoding para usarmos o método GetByte ' para transformar palintext num Array de Bytes. Dim utf8encoder As UTF8Encoding = New UTF8Encoding() Dim inputInBytes() As Byte = utf8encoder.GetBytes(plainText) ' Criar um novo Service Provider TripleDES (serviço de enryptação) Dim tdesProvider As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() ' O interface ICryptTransform usa o TripleDES ' crypt provider com a chave de encryptação e o vector de incialização Dim cryptoTransform As ICryptoTransform = tdesProvider.CreateEncryptor(Me.key, Me.iv) ' Todas as funções cryptographicas necessitam de um stream para o output ' informação encryptada. Aqui declaramos um Stream de Memória ' para este fim. Dim encryptedStream As MemoryStream = New MemoryStream() Dim cryptStream As CryptoStream = New CryptoStream(encryptedStream, cryptoTransform, CryptoStreamMode.Write) ' Escreve a informação encryptada para o stream. Flush a informação quando terminado ' para garantir que é tudo esvaziado do buffer. cryptStream.Write(inputInBytes, 0, inputInBytes.Length) cryptStream.FlushFinalBlock() encryptedStream.Position = 0 ' Ler o stream de novo para o Array de Bytes e retorna ao metodo de chamada Dim result(encryptedStream.Length - 1) As Byte encryptedStream.Read(result, 0, encryptedStream.Length) cryptStream.Close() Return result End Function e agora o método para desencryptar (o inverso).. recebe um Array de Bytes encryptados e retorna um string com o plainText desencryptado Public Function Decrypt(ByVal inputInBytes() As Byte) As String ' UTFEncoding é usado para transforma o Array de Bytes desencryptado de novo numa string Dim utf8encoder As UTF8Encoding = New UTF8Encoding() Dim tdesProvider As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() ' Antes temos de providenciar a chave de encryptação/desencryptação como o init vector. Dim cryptoTransform As ICryptoTransform = tdesProvider.CreateDecryptor(Me.key, Me.iv) ' Providencia o stream de memoria para desencryptar a informação nele Dim decryptedStream As MemoryStream = New MemoryStream() Dim cryptStream As CryptoStream = New CryptoStream(decryptedStream, cryptoTransform, CryptoStreamMode.Write) cryptStream.Write(inputInBytes, 0, inputInBytes.Length) cryptStream.FlushFinalBlock() decryptedStream.Position = 0 ' Lê o stream de memoria e converte de novo numa string Dim result(decryptedStream.Length - 1) As Byte decryptedStream.Read(result, 0, decryptedStream.Length) cryptStream.Close() Dim myutf As UTF8Encoding = New UTF8Encoding() Return myutf.GetString(result) End Function compilem como uma assembly DotNet e podem usa-la em todos os projectos, mesmo noutras linguagens DotNet como o C# ou o M$ Java para usar basta declarar um array de bytes e o objecto TripleDES dim arrBytes() as byte dim strTextToEncrypt as sting dim objEncrypt as new TripleDES arrBytes = objEncrypt.Encrypt(strTextToEncrypt) teckV Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now