• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

teckV

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

1 mensagem neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora