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.

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.

Começando a programar em Python – Parte 1

Hoje aprenderemos os primeiros passo para programar em Python[bb].

Quando digo aprenderemos, me incluo. Assim como o blog surgiu como uma forma de exercício quando estava aprendendo a programar, na época em Visual Basic, a partir de hoje teremos também posts abordando o Python.*

O que precisamos para iniciar?

A primeira coisa que precisamos fazer é instalar em nosso computador um interpretador Python. Se você estiver utilizando Windows, será necessário baixar e instalar. No link http://www.python.org/download/ você encontrará os arquivo necessários. Se for um usuário Linux[bb] é provável que já o tenha, tente executar “python” no shell.

Para esse primeiro contato, veremos como utilizar a IDLE (versão para Windos), que é um interpretador interativo, com ele ao digitar as instruções no console, após o “Enter” o comando é executado, e se houver saída será exibida na próxima linha.

Na atual versão do Python instalada em meu computador o IDLE tem a seguinte aparência.

Ela trás algumas informações de versão e licença, mas o que nos interessa mesmo está após o simbolo “>>>”, conhecido como prompt.

Começando do Zero

Como havia dito, o interpretador interativo exibe o resulta, caso tenha, da instrução digitada na linha seguinte à do comando.

Então vamos ao código. Toda a parte que estiver em itálico e roxo, deve ser digitada, inclusive aspas. Atenção, recomento que não copie o código de exemplo que aqui coloco, já que alguns caracteres podem ser interpretados de forma diferente pelo navegar, e ao colar na IDLE, esta pode não aceitar o carater.Mehor digitar os comandos, inclusive isso ajuda na fixação.

O básico, digite na IDLE Ola mundo!! e de enter.

Terá o seguinte resultado.

Não utilizei o acento em ‘Olá’. Da forma como fizemos, simplesmente digitando a string na IDLE o “á” será substituído por seu equivalente na tabela ASCII em notação octal. Para que o python interprete de forma correta se digitarmos ‘Olá’, é necessário digitar print “Olá mundo!!”. Tente ai.

O python aceita tando aspas ‘simples’ quando “duplas” para representar strings. Recomendo que se começar o seu código com ‘simples’, sempre use ‘simples’. É mais por uma questão de estética do código.

Agora o Feijão com arroz.

Vimos que o interpretador exibiu o nosso Olá mundo assim que digitamos a instrução e demos enter.

E para cálculos? Tão simples quanto a primeira instrução.

Digamos que queira saber quando é 1 + 1.

Se você percebeu o quando o python é simples, já deve imaginar.

Para exibir o resultado é muito simples, basta digitar 1+1 e apertar enter. Tente e veja o resultado.

Perceba que utilizamos o operador “+” para fazer a soma, este operador além de indicar que será feita uma soma, pode ser utilizado para concatenar textos, ou ‘junta’ os textos.

Por exemplo vamos utilizar o operador “+” para concatenar o nosso Olá mundo.

Digite print “Olá “ + “mundo!!” e aperte “Enter”.

Perceba que o resultado é o mesmo ao obtido no primeiro exemplo.

E se quisermos fazer em uma mesma linha uma soma é uma concatenação?

Veremos no próximo post!

* Nota:

Esta sequencia de artigos está sendo feita utilizando o que venho aprendendo, como referência para os artigos estou utilizando um material disponibilizando no nesse link. É possível que algumas partes dos textos por min escrito sejam parecidas com o material citado, porém todos os exemplos são feitos e testados previamente por mim, não havendo cópia do material. Sinta-se a vontade para ler o material que citei, é um ótimo material. O que estou fazendo é estudando python, inclusive com outros materiais e a medida em que vou aprendendo, escreve os artigos aqui no HinfOS, que a maneira que tenho de exercitar e ter um material disponível onde eu estiver, para consultas rápidas.

Visual Basic: Resgatando Variáveis de Ambiente

Variáveis de ambiente são variáveis que contém informações do sistema. Por exemplo o caminho da pasta “Arquivos de Programas”. Dependendo do idioma que o computador[bb] estiver configurado esta pasta pode ter outro nome, assim como o sistema pode não ter sido instalado no tradicional Drive C:.

Outro tipo de informação que pode ser resgatada seguindo essa linha[bb], é a pasta “Meus Documentos”. O caminho para está pasta pode ser alterado, ou seja, a pasta “Meus Documentos”, pode ser a pasta “D:documentos”, como poderão ver na imagem abaixo que representa o código desenvolvido como exemplo, exibindo as variáveis de sistema da minha máquina[bb].

Para esse teste criei um formulário com os seguintes objetos:

  • Um Button chamado btnCarregarVariaveis;

  • e um ListBox chamado lbVar;

Vamos ao código.

Antes de mais nada você deve importar a classe responsável pelas variáveis de ambiente.

Imports System.Environment

Para o botão:

Private Sub btnCarregarVariaveis_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarregarVariaveis.Click
lbVar.Items.Clear()
lbVar.Items.Add("Meus Documentos: " & GetFolderPath(SpecialFolder.MyDocuments))
lbVar.Items.Add("Arquivos de Programas (x86): " & GetFolderPath(SpecialFolder.ProgramFiles))
lbVar.Items.Add("Pasta System32: " & GetFolderPath(SpecialFolder.System))
lbVar.Items.Add("Desktop: " & GetFolderPath(SpecialFolder.Desktop))
lbVar.Items.Add("----------------------------")
lbVar.Items.Add("Drives do Sistema: " & Join(GetLogicalDrives, ", "))
lbVar.Items.Add("Nome do Computador: " & MachineName)
lbVar.Items.Add("Versão do Sistema: " & OSVersion.VersionString)
End Sub

O que estou fazendo.

Linha 2: limpo o ListBox para caso clique duas vezes no botão não preencha duas vezes.

A partir da linha 3 começo a adicionar as variáveis de ambiente ao meu ListBox por meio da função Add da propriedade Items.

Nas linhas 3, 4, 5 e 6 estou utilizando a função GetFolderPath para retornar as variáveis que correspondem a caminhos do sistema, como por exemplo na linha 5 onde é retornado a pasta System32. A função GetFolderPath recebe como parâmetro um Enum SpecialFolder. Com o Enumeration SpecialFolder, temos acesso às pastas do sistema.

Linha 8: Nessa linha utilizei a função GetLogicalDrives que retorna um array com os Drives do sistema, por isso utilizei também a junção Join que retorna uma String a partir de um array, tendo como segundo parâmetro uma String que será utilizada para separar os itens do array.

Linha 9: Função MachineName retorna o nome da máquina.

Linha 10: Propriedade OSVersion contém informações do sistema. Propriedade VersionString retorna a versão do sistema.

É isso galera até uma próxima.

Visual Basic: Encurtando URL com API Migre.me

Está se tornando cada vez mais comum a utilização de encurtadores de URL para compartilhar um link, memorizá-lo de forma mais fácil e até mesmo para fazer pegadinhas.

Há muitos encurtadores de URL, neste post vou mostrar como utilizar a API[bb] do Migre.me, encurtador de URL brasileiro, em um projeto em Visual Basic .NET.

O que é uma API?

API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. Fonte: Wikipédia

Primeiro criaremos um formulário com duas Labels, dois Textbox e um Button, como na imagem abaixo.

Clique para Ampliar

Os nomes dos Objetos são:

Textbox onde será digitada a URL: txtURL;

Textbox onde será exibido o resultado (URL[bb] encurtada): txtURLEncurtada;

Botão: btnEncurtar;

Vamos ao código.

É necessário importar duas classes, são elas:

Imports System.IO
Imports System.Net

Clicando no botão duas vezes você terá acesso a procedure que corresponde ao evento Click deste.

O código par que a API retorne a URL encurtada é:

    Private Sub btnEncurtar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncurtar.Click
        Dim url As String = "http://migre.me/api.txt?url=" & txtURL.Text

        Dim cliente As New WebClient
        Dim strS As Stream
        strS = cliente.OpenRead(url)

        Dim strR As New StreamReader(strS)

        txtURLEncurtada.Text = strR.ReadToEnd

        strR.Close()
        strS.Close()
    End Sub

Explicarei a seguir cada linha para ficar claro.

Linha 2: Declaração da variável que receberá a URL que deverá ser encurtada. Em seguida, na mesma linha, montamos a URL da API para que está retorne o resultado que queremos.

Entendendo o URL da API: quando solicitamos http:// migre.me/api.txt?url=NossaURLGrande, nos é retornado um arquivo de texto simples (.txt) com a URL já encurtada. Onde NossaURLGrande será a URL digitada.

Linha 4: declaração da variável que será responsável por fazer a solicitação à API.

Linha 5: declaração da variável que receberá o retorno (o arquivo .txt) enviado pela API.

Linha 6: a variável cliente faz a solicitação, por meio da função OpenRead, e armazena o retorno na variável strS.

Linha 8: declaração da variável que lerá a variável strS.

Linha 10: por meio da função ReadToEnd, o conteúdo do retorno da API é armazenado no txtURLEncurtada.

Linha 12 e 13: fecham variáveis que utilizamos para ler o arquivo. Uma forma de indicar que já terminamos de ler, quando trabalhando com arquivos locais a não utilização do método Close, pode impedir que o arquivo[bb] seja aberto por outro programa.

Clique para Ampliar

Lembrete: a API do migre.me limita a quantidade de URL encurtadas em uma hora.

Com isso temos nosso encurtador de URL.

Até uma próxima!