• Martes 14 de Mayo de 2024, 22:45

Autor Tema:  Desencriptar contraseña para validar usuario  (Leído 5751 veces)

lunaDeEden

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Desencriptar contraseña para validar usuario
« en: Domingo 17 de Enero de 2010, 04:08 »
0
Hola tengo una duda, no puedo hacer el login de mi proyecto tengo una tabla de usuarios:
CREATE TABLE usuarios (
 nombre_usuario varchar (40) ,
 PASSWORD varchar(40)
);

y con las siguientes sentencias en mysql puedo acceder al usuario ingresando la contraseña y volviendo a encriptar:

//**Inserto datos en la tabla usuarios encriptandolo mediante el metodo SHA1**//
INSERT INTO usuarios (nombre_usuario, password) VALUES ('marilu', SHA1('trenesito'));

y con este lo encripto nuevamente y lo comparo, en mysql anda perfecto:

//** Desencripta y me da el usuario, encriptando nuevamente la contraseña**//
SELECT nombre_usuario FROM usuarios WHERE password=SHA1("venecia") LIMIT 0, 1


Pero:  a la hora de ir a codificar en c# coloco el select de arriba y me valida unicamente el usuario y no la contraseña, tengo este codigo:
Código: C#
  1. private void cmdaceptar_Click(object sender, EventArgs e)
  2.         {
  3.            MySqlConnection CANAL;
  4.            MySqlDataAdapter ORDEN;
  5.            CANAL = new MySqlConnection("user id=root;database=tucuman;server=localhost");
  6.            string q = "SELECT *FROM usuarios WHERE password=SHA1(password)=@contrasena and (nombre_usuario=@nom) LIMIT 0, 1";
  7.        
  8.            ORDEN = new MySqlDataAdapter(q, CANAL);
  9.            ORDEN.SelectCommand.Parameters.Add(new MySqlParameter("@contrasena",MySqlDbType.VarChar));
  10.            ORDEN.SelectCommand.Parameters.Add(new MySqlParameter("@nom", MySqlDbType.VarChar));
  11.            ORDEN.SelectCommand.Parameters["@contrasena"].Value = t_con.Text;
  12.            ORDEN.SelectCommand.Parameters["@nom"].Value=t_us.Text;
  13.            DataTable TABLA = new DataTable();
  14.            ORDEN.Fill(TABLA);
  15.  
  16.              if (TABLA.Rows.Count > 0)
  17.                {
  18.                    MessageBox.Show("Puede ingresar","Cuero Tucumán");
  19.                }
  20.                else
  21.                {
  22.                    
  23.                    MessageBox.Show("acceso denegado","Cuero Tucumán");    
  24.                 }
  25.                CANAL.Close();
  26.            }
  27.  

Alguien me puede decir que esta mal.....porfa...gracias desde ya... :comp:

Nehandertal

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Desencriptar contraseña para validar usuario
« Respuesta #1 en: Lunes 18 de Enero de 2010, 18:21 »
0
No conozco el lenguaje de programación C#, pero a simple vista parece que lo que tienes mal es esto:
Código: C#
  1.  
  2. "SELECT *FROM usuarios WHERE password=SHA1(password)=@contrasena and (nombre_usuario=@nom) LIMIT 0, 1";
  3.  

Creo que deberías de ponerlo así:
Código: C#
  1.  
  2. "SELECT * FROM usuarios WHERE password=SHA1('@contrasena') AND nombre_usuario='@nom' LIMIT 0, 1";
  3.  

No se si será necesario acotar con comillas simples las variables ya que son strings y puede que tengan espacios, comas y demás caracteres extraños. Si con las comillas simples no te va, prueba sin ellas.

Ten en cuenta que en la validación de nombre que haces en esa select estás distinguiento entre mayúsculas y minúsculas.

Espero que te sirva.

lunaDeEden

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Desencriptar contraseña para validar usuario
« Respuesta #2 en: Lunes 18 de Enero de 2010, 18:52 »
0
Hola gracias po responder probe tu codigo y nada....  directamente no me valida nada con el que yo uso solo me valida el usuario y si es el mismo ya entra, pero la contraseña no....no se que hacer..... :argh: .

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Desencriptar contraseña para validar usuario
« Respuesta #3 en: Lunes 18 de Enero de 2010, 20:04 »
0
Luna, ya te dijeron como:
Cita de: "Nehandertal"
Si con las comillas simples no te va, prueba sin ellas.

sin comillas debe funcionar, o sea:

Código: SQL
  1.  
  2. SELECT * FROM usuarios WHERE password=SHA1(@contrasena) AND nombre_usuario= @nom LIMIT 0, 1;
  3.  
  4.  

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

lunaDeEden

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Desencriptar contraseña para validar usuario
« Respuesta #4 en: Martes 19 de Enero de 2010, 14:13 »
0
Gracias a los dos ando perfecto...... :good: