Visual Basic.NET - Ayuda con comparacion de campos con encriptacion MD5

 
Vista:

Ayuda con comparacion de campos con encriptacion MD5

Publicado por Cristian (2 intervenciones) el 04/02/2018 01:27:43
Basicamente estoy haciendo un login, el cual consiste en arrastrar los datos de un db, y necesito comparar el campo de la contraseña el cual tiene una encriptacion de MD5, lo que no se y tengo duda es de como puedo comparar ese campo con esa encriptacion, ya que por lo visto no puedo desencriptar el campo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.
Val: 62
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con comparacion de campos con encriptacion MD5

Publicado por Leonardo Daniel A. (36 intervenciones) el 04/02/2018 02:38:20
Hola... yo trate de implementarlo en C#, pero la verdad, no hay nada de documentacion para hacer una desincriptacion, hay ejemplo de encriptar, pero no de como desencriptar.... asi que opte por hacer otro tipo de encriptacion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Funcion para Encriptar
        public static string Encrypt(string Text, string Key)
        {
            const int keysize = 256;
            const string initVector = "tu89geji340t89u2";
 
            byte[] initVectorBytes = Encoding.UTF8.GetBytes(initVector);
            byte[] plainTextBytes = Encoding.UTF8.GetBytes(Text);
            PasswordDeriveBytes password = new PasswordDeriveBytes(Key, null);
            byte[] keyBytes = password.GetBytes(keysize / 8);
            RijndaelManaged symmetricKey = new RijndaelManaged();
            symmetricKey.Mode = CipherMode.CBC;
            ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes);
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
            cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
            cryptoStream.FlushFinalBlock();
            byte[] Encrypted = memoryStream.ToArray();
            memoryStream.Close();
            cryptoStream.Close();
            return Convert.ToBase64String(Encrypted);
        }
 
        // Funcion para Encriptar
        public static string Decrypt(string EncryptedText, string Key)
        {
            const int keysize = 256;
            const string initVector = "tu89geji340t89u2";
 
            byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
            byte[] DeEncryptedText = Convert.FromBase64String(EncryptedText);
            PasswordDeriveBytes password = new PasswordDeriveBytes(Key, null);
            byte[] keyBytes = password.GetBytes(keysize / 8);
            RijndaelManaged symmetricKey = new RijndaelManaged();
            symmetricKey.Mode = CipherMode.CBC;
            ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
            MemoryStream memoryStream = new MemoryStream(DeEncryptedText);
            CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
            byte[] plainTextBytes = new byte[DeEncryptedText.Length];
            int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
            memoryStream.Close();
            cryptoStream.Close();
            return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
        }
 
 
        // para usarlas...   seria algo asi
        usuario = txtUsuario.text;
        password = txtPassword.text;
        password = Encrypt( password, "mi_llave" );
 
        // y suponiendo que tienes una clase ligada a una tabla de usuarios que debes consultar
        var usuario = from u db.Usuarios
                     where u.usuario == usuario && u.password  == password
                        select u;
        if ( usuario == null )
        {
             alert.Show( "error en el nombre de usuario o contraseña" );
        }

hay paginas para convertir codigo de C# a VB y viceversa

http://converter.telerik.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 224
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con comparacion de campos con encriptacion MD5

Publicado por gilman (81 intervenciones) el 04/02/2018 08:36:43
MD5, no se puede desencriptar, lo que tienes es que calcular el valor MD5 del dato introducido por el usuario como contraseña y compararlo con el valor guardado en la bd.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con comparacion de campos con encriptacion MD5

Publicado por Cristian (2 intervenciones) el 04/02/2018 17:50:00
Tengo este código, el cual imagino que es algo más o menos así, de igual manera se que tengo un error, porque no me está dejando acceder al usuario

1
2
3
4
5
6
7
8
9
10
11
12
If txtUsername.Text <> "" And txtContraseña.Text <> "" Then
    consulta = "SELECT id, usuario, password FROM usuarios WHERE usuario='" & txtUsername.Text & "' and password='MD5(" & txtContraseña.Text & ")'"
    adaptador = New MySqlDataAdapter(consulta, conexion)
    datos = New DataSet
    adaptador.Fill(datos, "usuarios")
    lista = datos.Tables("usuarios").Rows.Count
End If
If lista <> 0 Then
    MsgBox("Bienvenido")
Else
    MsgBox("Intentelo de nuevo")
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 224
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con comparacion de campos con encriptacion MD5

Publicado por gilman (81 intervenciones) el 05/02/2018 10:49:50
cambia:
1
consulta = "SELECT id, usuario, password FROM usuarios WHERE usuario='" & txtUsername.Text & "' and password='MD5(" & txtContraseña.Text & ")'"
por:
1
consulta = "SELECT id, usuario, password FROM usuarios WHERE usuario='" & txtUsername.Text & "' and password=MD5('" & txtContraseña.Text & "')"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar