Passo a Passo de uma Criptografia MD5

No post de hoje, mostrarei a vocês quais os passos para criptografar uma String. Além de aprender[bb] como criptografar um texto com a Criptografia MD5, vocês poderão observar o que acontece com o texto digitado a cada processo que ele passa.

Iniciando o desenvolvimento

A primeira coisa que devemos fazer, é importar as Namespace que tratam texto e que contém as classes de criptografia[bb].

Imports System.Text
Imports System.Security.Cryptography

Interface para o teste

Como você podem ver na imagem abaixo, acima de cada TextBox há uma Label explicando o que será exibido nele.

Formulário utilizado para exibir os passos da criptografia

Formulário utilizado para exibir os passos da criptografia

Código com passo a passo para a criptografia MD5

Abaixo temos o código necessário para criptografar o texto. No próprio código já estou explicando o que cada linha faz.

    Private Sub btnConverter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConverter.Click
        ' Limpa TextBox que exibirão o Resultado
        TextBox2.Clear()
        TextBox4.Clear()
        TextBox5.Clear()

        ' Variável utilizada para gerar o primeiro Hash
        Dim Ue As New UnicodeEncoding ' Também pode ser usado o UTF8Encoding
        ' Vetor que receberá a Hash gerada pela codificação acima
        Dim ByteSourceTexto() As Byte
        ' Variável que gerará a Hash MD5
        Dim md5 As New MD5CryptoServiceProvider
        ' Vetor que receberá a Hash MD5 gerada pela variável acima
        Dim Bytehash() As Byte

        ' Gera Hash de Bytes a partir do texto digitado.
        ' ** É gerado um Vetor **!
        ByteSourceTexto = Ue.GetBytes(TextBox1.Text)

        ' For each: pega gada item do vetor gerado acima
        ' 1º Codificação. Bytes do Texto Digitado
        For Each b In ByteSourceTexto
            TextBox2.Text &= b
        Next

        ' Gera Hash de Bytes com a codificação MD5
        ' ** É gerado um Vetor! **
        Bytehash = md5.ComputeHash(ByteSourceTexto)

        ' For each: pega gada item do vetor gerado acima
        ' 2º Criptografa String acima em uma hash de byte MD5.
        For Each b In Bytehash
            TextBox4.Text &= b
        Next

        ' Último Passo:
        ' 3º Converte os Bytes para uma base String de 64 Digitos.
        ' Este último texto seria, por exemplo, gravado no banco de dados.
        TextBox5.Text = Convert.ToBase64String(Bytehash)
    End Sub

E como resultado[bb] temos o seguinte:

Resultado do passo a passo da criptografia

Resultado do passo a passo da criptografia

E por hoje é. Até uma próxima.

Funções com assinaturas diferentes

No post de hoje, veremos como criar funções com assinaturas diferentes. Dessa forma, é possível criar funções com o mesmo nome, porém, executando tarefas diferentes. Também é possível criar vários métodos construtores[bb] para as classes, alterando os parâmetros que são recebidos. Vamos ver tudo isso logo abaixo.

Construtores das classes

Quando um código de uma classe está sendo escrito, é possível informar qual será o comportamento, ou o que será executado na classe, quando ela for executada. Esses são os métodos construtores. No Visual Basic .NET, o código para criar esse métodos está descrito abaixo.

Public Class Classe
    ' Método construtor
    Sub New()

    End Sub
End Class

Criando várias assinaturas

Quando você cria um método, este tem uma assinatura, que nada mais é, que o conjunto formado pelo nome, parâmetros e no caso de uma função que retorna valor, o tipo que será retornado. No caso de um método construtor, a assinatura não tem o nome, já que é utilizada a palavra reservada New. Abaixo temos a assinatura de um método chamado funcao1, com dois parâmetros: val1 e val2.

    Function funcao1(ByVal val1 As String, ByVal val2 As String) As String
        ' Algum código que utiliza os dos parâmetros
    End Function

Caso chamássemos esse método, seriamos obrigados a informar  os dos parâmetros. Ficaria: funcao1("Valor 1", "Valor 2"). Mas, se em algum momento, por algum motivo, fosse necessário executar essa função, sem passar esse dois parâmetros? É possível! Veja abaixo.

    Function funcao1(ByVal val1 As String, ByVal val2 As String) As String
        ' Código qualquer aqui.
    End Function
    Function funcao1() As String
        ' Código qualquer aqui.
    End Function

Se colocar esse código no seu projeto em VB .NET, tenha certeza que não vai dar erro.

O exemplo acima está muito genérico e não dá uma noção muito boa do que pode ser feito. Entretanto, não encerraria o post com essa pulga atrás da orelha a respeito da real utilidade disso. Abaixo está o código de uma classe qualquer, logo em seguida explicarei onde ela se encaixaria.

Public Class Class1
    Private _Id As Integer
    Private _Campo1 As String
    Private _Campo2 As String

    Sub New()
    End Sub

    Sub New(ByVal Campo1 As String, ByVal Campo2 As String)
        Me.Campo1 = Campo1
        Me.Campo2 = Campo2
    End Sub

    Sub New(ByVal Id As Integer, ByVal Campo1 As String, ByVal Campo2 As String)
        Me.Id = Id
        Me.Campo1 = Campo1
        Me.Campo2 = Campo2
    End Sub

    Public Property Id() As Integer
        Get
            Return _Id
        End Get
        Set(ByVal value As Integer)
            _Id = value
        End Set
    End Property
    Public Property Campo1() As String
        Get
            Return _Campo1
        End Get
        Set(ByVal value As String)
            _Campo1 = value
        End Set
    End Property
    Public Property Campo2() As String
        Get
            Return _Campo2
        End Get
        Set(ByVal value As String)
            _Campo2 = value
        End Set
    End Property

No exemplo acima, temos uma classe (Class1) com três campos. Perceba que criei três construtores para essa classe, dessa forma, posso instância essa classe sem passar parâmetros e utilizar as propriedades dessa classe, para atribuir o valores aos campos. Mas, se eu quiser instanciar a classe e já passar os valores, eu também posso.

E se você estiver utilizando o Visual Studio 2008+, ainda é possível visualizar de forma vem intuitiva os construtores.

Assinatura do método no Visual Studio 200

Espero que tenha ajudado! Até uma próxima.

Vídeo

Como carregar um ComboBox de maneira bem fácil

Nessa vídeo aula, mostro como carregar um ComboBox no Visual Basic .NET de maneira bem fácil. Para tanto, utilizarei um classe contendo os dados[bb] que serão inseridos e um DataTable que nos auxiliará na transferência dos dados.

Desse forma, você conseguirá retornar dados de função de busca, por exemplo, com uma lista (Lis(OF T)) de uma classe, mantendo a abstração da classe. Uma boa forma de trabalhar, quando está o desenvolvimento segue o padrão MVC.

Vídeo

Como colocar ícone da aplicação no System Tray (Área de notificação)

Nessa vídeo aula, mostro como colocar o ícone da aplicação na área de notificação do Windows[bb], também conhecida como System Tray. Além disso, também mostro como adicionar um menu vinculado ao ícone da aplicação. Para isso utilizarei os objetos NotifyIcon e ContextMenuStrip.

Vídeo

Supervisor de conteúdo com arquivo hosts

Nessa vídeo aula, mostro como configurar o arquivo hosts do Windows, afim de criar um supervisor de conteúdo que funcione tanto no Internet Explorer, quando em outros browsers. Como o supervisor de conteúdo (controle de pais no Windows 7) do Windows só bloqueia as páginas acessadas pelo Internet Explorer, é necessário um alternativa para que as regras sejam seguidas.