jueves, noviembre 25, 2010

VB.Net - Encriptación de Datos MD5


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


MD5 es uno de los algoritmos de reducción criptográficos diseñados por el profesor Ronald Rivest del MIT (Massachusetts Institute of Technology, Instituto Tecnológico de Massachusetts). Fue desarrollado en 1991 como reemplazo del algoritmo MD4 después de que Hans Dobbertin descubriese su debilidad. Anteriormente el algoritmo MD5 fue explicado con el lenguaje de programación Java, ahora lo explicare con el lenguaje de programación Visual Basic.Net

Private Enum AlgoritmoDeEncriptacion
        MD5 = 0
        SHA = 1
        TRIPLE_DESC
End Enum

Private Function Encriptar(ByVal valAlgoritmo As AlgoritmoDeEncriptacion, 
ByVal strCadena As String, Optional ByVal valIV As Byte = 0, 
Optional ByVal valKey As Byte = 0) As String
        Dim Codificacion As New UTF8Encoding
        Select Case valAlgoritmo
            Case AlgoritmoDeEncriptacion.MD5
                Dim md5Hasher As MD5 = MD5.Create()
                Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.GetBytes(
                strCadena))
                Dim sBuilder As New StringBuilder()
                Dim i As Integer
                For i = 0 To data.Length - 1
                    sBuilder.Append(data(i).ToString("x2"))
                Next i
                Return sBuilder.ToString()
            Case AlgoritmoDeEncriptacion.SHA
                Dim data() As Byte = Codificacion.GetBytes(strCadena)
                Dim resultado() As Byte
                Dim sha As New SHA1CryptoServiceProvider()
                resultado = sha.ComputeHash(data)
                Dim sb As New StringBuilder
                For i As Integer = 0 To resultado.Length - 1
                    If resultado(i) < 16 Then
                        sb.Append("0")
                    End If
                    sb.Append(resultado(i).ToString("x"))
                Next
                Return sb.ToString() '<-
            Case AlgoritmoDeEncriptacion.TRIPLE_DESC
                Dim message As Byte() = Codificacion.GetBytes(strCadena)
                Dim criptoProvider As New TripleDESCryptoServiceProvider
                Dim criptoTransform As ICryptoTransform = criptoProvider.
                CreateEncryptor(criptoProvider.Key, criptoProvider.IV)
                Dim memorystream As New MemoryStream
                Dim cryptoStream As New CryptoStream(memorystream, criptoTransform, 
                CryptoStreamMode.Write)
                cryptoStream.FlushFinalBlock()
                Dim encriptado As Byte() = memorystream.ToArray
                Dim cadenaEncriptada = Codificacion.GetString(encriptado)
                Return cadenaEncriptada
            Case Else
                Return ""
        End Select
End Function

Importaciones utilizadas:
  • Imports System.Security.Cryptography

9 comentarios:

EXCELENTE AMIGO PROBE EL CODIGO Y FUNCIONA A LA PERFECCION!
FACIL Y SENCILLO...MUCHAS GRACIAS!

Muchas gracias por visitar el blog ... y no te olvides de hacerte fan del blog por el FB

Dios te bendiga Henry, el codigo funciona a la perfección.

Giovanni Siquiej

Que bueno que te haya servido. Hazle clic en me gusta de nuestra pagina en FB o un +1 de google. Gracias

amigo que pena molestarlo la verdad soy novato en esto y quisiera pedirle el favor que me dijiera como utilizarlo pues no se como podria asignarselo a un textbox gracias

Tendrias que leer el valor del texto de la caja. Por ejemplo si tienes una caja de texto con el nombre txtClave. Tendrias que llamar a este metodo y pasarle como valor el texto escrito con la propiedad ... txtClave.text

Muchas gracias, el código me fue de gran utilidad.

Muchas gracias, el código me fue de gran utilidad.

Muchas gracias, el código me fue de gran utilidad.