Jump to content

[VB.NET v1.1] Encryptar com TripleDES e arrays de bytes


teckV
 Share

Recommended Posts

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.