none
Como usar encriptacion md5 RRS feed

  • Pregunta

  • Hola buenas noches.

    Estoy haciendo uso de VS2008, programando en C#. Estoy enviando a guardar un campo password a mi BD, este lo envio de esta manera dentro de mi clase Conexion.cs

        public static int guardarClientes(Cliente cliente)
    {
    string strSql = "INSERT INTO clientes (nombre, apellidos, " +
    "clave, telefono, correo, direccion, ciudad, " +
    "pais, codigopostal) " +
    " VALUES (@nombre, @apellidos," +
    "md5(@clave) , @telefono, @correo, @direccion, " +
    "@ciudad, @pais, @codigopostal); ";

    abrirBD();
    MySqlCommand comInsercion = new MySqlCommand(strSql, conMySql);
    comInsercion.Parameters.Add("descripcion",MySqlDbType.String,100 );
    comInsercion.Parameters.Add("precio", MySqlDbType.Double );
    comInsercion.Parameters.Add("existencias", MySqlDbType.Int32 );
    comInsercion.Parameters.Add("marca", MySqlDbType.String, 20);
    comInsercion.Parameters.Add("color", MySqlDbType.String, 20);
    comInsercion.Parameters.Add("clase", MySqlDbType.String, 20);
    comInsercion.Parameters.Add("imagen", MySqlDbType.String, 100);
    comInsercion.Parameters.Add("tamanio", MySqlDbType.String,20 );
    //--- asignar valores
    comInsercion.Parameters["descripcion"].Value = producto.Descripcion;
    comInsercion.Parameters["precio"].Value = producto.Precio;
    comInsercion.Parameters["existencias"].Value = producto.Existencias;
    comInsercion.Parameters["marca"].Value = producto.Marca;
    comInsercion.Parameters["color"].Value = producto.Color ;
    comInsercion.Parameters["clase"].Value = producto.Clase ;
    comInsercion.Parameters["imagen"].Value = producto.Imagen;
    comInsercion.Parameters["tamanio"].Value = producto.Tamanio ;

    int regAfectados = comInsercion.ExecuteNonQuery();
    cerrarBD();
    return regAfectados;

    }//--- fin de insertar productos


    Pero me envía un error: "Data too long for column 'clave' at row 1 "

    Estaba leyendo en Internet tambien y decían que el metodo HASH SHA1 es mas seguro. ¿Cual me recomiendan usar y cual es el error que estoy cometiendo en mi codigo?

    Gracias por su atencion

    martes, 22 de septiembre de 2009 1:37

Respuestas

  • Hola Araceli,

    efectivamente, tal y como dices, el método SHA1 es más seguro que el MD5, por lo que puedes usar el primero sin duda alguna.
    Por otro lado, el error que tienes es que el campo que intentas guardar en tu base de datos es demasiado grande. Debes cambiar la definición de esa columna en tu base de datos MySql y ponerlo de un tamaño mayor. Al convertirlo en Md5 el campo ahora ocupa más, por lo que debes darle más espacio (por ejemplo si esta definido como un varchar(5), cambialo a un varchar(100)). Puedes debugar la linea y comprobar cuanto ocupa exactamente (te pones sobre la linea   MySqlCommand comInsercion = new MySqlCommand(strSql, conMySql); y pulsas F9 para añadir un punto de interrupción. Luego pulsas F5 para lanzar la aplicación. Cuando llegue a ejecutar esa linea, se parará. Entonces pon el mouse encima de la variable strSql y podrás ver su contenido. Mira el tamaño de la clave y redimensiona el campo en la base de datos.

    Creo que utilizas LinqToSql o EntityFramewor Acuerdate, una vez modificada la base de datos, de actualizar el modelo del entityFramework o LinqToSql (vas al diagrama que tienes en Visual Studio y le das, con el botón derecho a Actualizar o Refresh).



    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta Araceli S miércoles, 23 de septiembre de 2009 2:17
    martes, 22 de septiembre de 2009 14:21
  • hola

    Clave TRIPLEDES

    en este otro post se trata el tema del SHA1


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Araceli S miércoles, 23 de septiembre de 2009 2:18
    martes, 22 de septiembre de 2009 15:10

Todas las respuestas

  • Hola Araceli,

    efectivamente, tal y como dices, el método SHA1 es más seguro que el MD5, por lo que puedes usar el primero sin duda alguna.
    Por otro lado, el error que tienes es que el campo que intentas guardar en tu base de datos es demasiado grande. Debes cambiar la definición de esa columna en tu base de datos MySql y ponerlo de un tamaño mayor. Al convertirlo en Md5 el campo ahora ocupa más, por lo que debes darle más espacio (por ejemplo si esta definido como un varchar(5), cambialo a un varchar(100)). Puedes debugar la linea y comprobar cuanto ocupa exactamente (te pones sobre la linea   MySqlCommand comInsercion = new MySqlCommand(strSql, conMySql); y pulsas F9 para añadir un punto de interrupción. Luego pulsas F5 para lanzar la aplicación. Cuando llegue a ejecutar esa linea, se parará. Entonces pon el mouse encima de la variable strSql y podrás ver su contenido. Mira el tamaño de la clave y redimensiona el campo en la base de datos.

    Creo que utilizas LinqToSql o EntityFramewor Acuerdate, una vez modificada la base de datos, de actualizar el modelo del entityFramework o LinqToSql (vas al diagrama que tienes en Visual Studio y le das, con el botón derecho a Actualizar o Refresh).



    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta Araceli S miércoles, 23 de septiembre de 2009 2:17
    martes, 22 de septiembre de 2009 14:21
  • hola

    Clave TRIPLEDES

    en este otro post se trata el tema del SHA1


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Araceli S miércoles, 23 de septiembre de 2009 2:18
    martes, 22 de septiembre de 2009 15:10
  • Hola Javier,

    Muchas gracias por tu respuesta tan específica y clara. Eres muy amable.

    Saludos
    miércoles, 23 de septiembre de 2009 2:16
  • Como siempre, muchas gracias Leandro!

    :) Saludos
    miércoles, 23 de septiembre de 2009 2:18