Mostrando postagens com marcador Programação. Mostrar todas as postagens
Mostrando postagens com marcador Programação. Mostrar todas as postagens

quarta-feira, 3 de outubro de 2007

Mais um pouco de .NET

É, já faz tempo que não posto nada. Trabalho, faculdade, não é fácil. Parece que o dia fica cada vez mais curto. Mas, é a vida! :)

Que tal mais um pouco de VB.NET???

Então vamos lá!!

Criptografia de senhas

Eu ainda não tenho muita intimidade com .NET, mesmo porque mexo com ele há muito pouco tempo. Mesmo assim, posso mostrar um pouco do que estou aprendendo.

Estava em uma aula da faculdade fazendo parte de um trabalho. Comecei a tentar, através de algumas dicas pela internet, a fazer criptografia com MD5 em Java.

Funcionou que é uma beleza, só preciso passar pra uma classe, etc, etc...

Chegando em casa no mesmo dia, resolvi tentar fazer a mesma coisa e VB.NET, pra minha decepção, não consegui fazer logo de primeira. Também segui algumas dicas pela internet, mas nem assim me ajudaram...

Vamos ao código.

Primeiro vou mostrar o código da função para encriptar a senha:

Shared Function encriptaSenha(ByVal senhaPlana As String) _
As String

'Declaração da variável que possui os algoritmos _
'de criptografia

Dim md5 As New _
Security.Cryptography.MD5CryptoServiceProvider

'Declaração da variável para acesso aos bytes do _
'texto digitado

Dim A2 As New _
System.Text.ASCIIEncoding

'A função getBytes transforma as letras para a sua _
'representação em bytes

Dim bytes() As Byte = _
A2.GetBytes(senhaPlana)

'ComputeHash finalmente faz a criptografia e retorna _
'um array de bytes criptografados. Então, precisamos _
'de uma função para deixar isso mais "legível", _
'a toHex.

Return toHex(md5.ComputeHash(bytes))

End Function



A função toHex tem como entrada os bytes computados pelo ComputeHash do MD5. Então precisamos converter para hexadecimal, para que o armazenamento seja mais trivial.
Shared Function toHex(ByVal bytes() As Byte) As String
'String com todos os dígitos da base hexadecimal
Dim hexDigits As String = "0123456789abcdef"

Dim retorno As String = ""
'Para cada byte no vetor de bytes o looping abaixo _
'realiza a seguinte tarefa:
'Concatena com a string retorno o caractere que se _
'encontra na posição X e Y da string hexDigits, _
'onde X é a parte inteira da divisão de cada byte _
'por 16 (base hexadecimal) e Y é o resto da divisão _
'inteira entre cada byte por 16.

For Each bt As Byte In bytes
retorno &= hexDigits.ToCharArray.GetValue _
(CInt(Int(bt / 16))).ToString()
retorno &= hexDigits.ToCharArray.GetValue _
(CInt(Int(bt Mod 16))).ToString()
Next

Return retorno

End Function


Resumindo:

Devemos declarar uma variável como Security.Cryptography.MD5CryptoServiceProvider para calcular o hash (sequência de 16 bytes) que representa a string original criptografada.

Depois utilizamos a função toHex para converter o hash para a base hexadecimal.

Simples, rápido, fácil e ótimo para criptografar senhas!

Por enquanto é só, até a próxima!

segunda-feira, 17 de setembro de 2007

Começando em .NET

Essa é a primeria de uma série de dicas que irei postar. Sempre que me deparar com algo interessante em programação, ou qualquer outro assunto irei compartilhar minhas experiências.

Como programador VB6 sempre que precisava de algum dado simples de configuração para meus aplicativos utilizava os arquivos INI com acesso através das API's do Windows.

Entrando agora em .NET, queria a mesma funcionalidade. Mas já que estamos em outro nível de programação, nada mais justo do que procurar um modo mais estruturado de guardar essas informações. Foi aí que surgiu a idéia de buscar essas informações em um XML.

Pesquisei bastante no Google e encontrei diversos modos de acessar esse tipo de arquivo, porém só um deles me chamou a atenção. Pois, pelo que li, ele é o único que permite o acesso de escrita em XML também.

Bom, chega de papo, e mãos à obra.

O processo é extremamente simples.

Vamos supor que temos um arquivo "meuarquivo.xml" no "C:\", com a seguinte estrutura:

meuarquivo.xml
<raiz>
<rotulo>teste</rotulo>
</raiz>


Em VB.NET para carregar o arquivo você simplesmente tem que declarar uma variável como System.Xml.XmlDocument, depois utilizar a função Load para indicar qual arquivo deseja carregar. Ficando assim:

VB.NET
Dim arqXml As New System.Xml.XmlDocument
arqXml.Load("C:\meuarquivo.xml")
C#
System.Xml.XmlDocument arqXml = new System.Xml.XmlDocument();
arqXml.Load("C:\meuarquivo.xml");


Após isso, através da função SelectSingleNode, conseguimos encontrar a informação que queremos.

VB.NET
Dim texto as string
texto = arqXml.SelectSingleNode("//raiz/rotulo").InnerText()
C#
String texto;
texto arqXml.SelectSingleNode("//raiz/rotulo").InnerText();


Deste modo colocaremos o valor 'teste' na variável texto.

Muito simples, não?? Até a próxima!

sábado, 15 de setembro de 2007

Programação OpenGL

Estou no quinto semestre de ciências da computação no mackenzie.

Este semestre estou fazendo uma matéria que chama Introdução a Computação Gráfica. Tivemos um primeiro trabalho para mexer com fractais, e agora um segundo para criar uma aplicação em C++ que mostre um objeto 3D utilizando OpenGL.

Este aplicativo simplesmente lê as informações de um arquivo txt, onde dentro deste arquivo temos as coordenadas dos vértices do objeto e os vértices que fazem parte de uma face (triângulo).

Se quiser entender um pouco mais, brinque com as coordenadas do arquivo obj.txt, é simples. Caso queira, tente até criar algum objeto e utilizar o programa para mostrá-lo em 3D.

Os arquivos estão disponíveis no SkyDrive (drive virtual da Microsoft).

GLUT.exe
obj.txt

Até a próxima.