none
Problema al guardar la contraseña encriptada en la BDD C# RRS feed

  • Pregunta

  • Hola , estoy insertando un usuario con la contraseña Encriptada y algo anda mal en la contraseña de la BDD

    La contraseña debería guardarse asi: +L+cj2L8MLwOAZKCyiSWsqROAVg=   , Tal como señalo en la imagen de abajo

    Y asi en la base de datos me la guarda incompleto: +L+cj2L8MLwOAZK , tal como señalo la imagen de abajo

    Bueno aqui dejo el codigo de la encriptacion en la capa de datos: 

    namespace CapaDeDatos
    {
        internal class helper
        {
            public static string encodepassword(string originalPassword)
            {
                SHA1 sha1 = new SHA1CryptoServiceProvider();
                byte[] inputBytes = (new UnicodeEncoding()).GetBytes(originalPassword);
                byte[] hash = sha1.ComputeHash(inputBytes);

                return Convert.ToBase64String(hash);

            }

        }

    }

    Capa de Datos

                                                   

     public string InsertarUsuarios(DUsuario parUsuario)
            {
                string Respuesta = "";
                SqlConnection SqlConexion = new SqlConnection();

                try
                {
                    SqlConexion.ConnectionString = DConexion.CnConexion;
                    SqlConexion.Open();              

                    SqlCommand SqlComando = new SqlCommand();
                    SqlComando.Connection = SqlConexion;
                    SqlComando.CommandText = "InsertarUsuarios";
                    SqlComando.CommandType = CommandType.StoredProcedure;

                    SqlParameter parIdPerfil = new SqlParameter();
                    parIdPerfil.ParameterName = "@IdPerfil";
                    parIdPerfil.SqlDbType = SqlDbType.Int;
                    parIdPerfil.Value = parUsuario.IdPerfil;
                    SqlComando.Parameters.Add(parIdPerfil);

                    SqlParameter parNombre = new SqlParameter();
                    parNombre.ParameterName = "@Nombre";
                    parNombre.SqlDbType = SqlDbType.VarChar;
                    parNombre.Size = parUsuario.Nombre.Length;
                    parNombre.Value = parUsuario.Nombre;
                    SqlComando.Parameters.Add(parNombre);

    string hash = helper.encodepassword(string.Concat(parUsuario.Nombre, parUsuario.Contraseña));

                    SqlParameter parContraseña = new SqlParameter();
                    parContraseña.ParameterName = "@Contraseña";
                    parContraseña.SqlDbType = SqlDbType.VarChar;
                    parContraseña.Size = hash.Length;
                    parContraseña.Value = hash;
                    SqlComando.Parameters.Add(parContraseña);

                    SqlComando.ExecuteNonQuery();
                    Respuesta = "Y";

                }
                catch (SqlException ex)
                {
                   throw new Exception("Error al intentar ejecutar el procedimiento almacenado UltimoSesionCaja. " + ex.Message, ex);


                }
                finally
                {
                    if (SqlConexion.State == ConnectionState.Open)
                    {
                        SqlConexion.Close();
                    }
                }
                return Respuesta;
            }

    Capa de Negocio

    public static String InsertarUsuarios(int parIdPerfil, string parNombre, string parContraseña)
            {
                DUsuario Usuarios = new DUsuario();
                Usuarios.IdPerfil = parIdPerfil;
                Usuarios.Nombre = parNombre;
                Usuarios.Contraseña = parContraseña;

                return Usuarios.InsertarUsuarios(Usuarios);

            }

    Capa del formulario

    private void BarButtonGuardar_Click(object sender, EventArgs e)
            {
               
                    string mensaje = NUsuario.InsertarUsuarios(Convert.ToInt32(this.radCheckedDropDownListIdPerfil.ValueMember),
                                                               this.radTextBoxNombreUsuario.Text, this.radTextBoxContraseña.Text);


            }

    sábado, 30 de julio de 2016 15:17

Respuestas

  • Hola Gabriela345,

    De qué tamaño estás creando el campo contraseña? No será un varchar(15) no? Ya que si le pones un tamaño y le mandas un valor con mayor longitud, este solo tomará lo que le asignas al campo.

    Además cuando creas el parámetro el atributo Size es el tamaño máximo de datos en la columna.

    Si en tu BD estableces un campo :

    Nombre varchar(15)
    SqlComando.Parameters.Add(new SqlParameter("@Nombre",SqlDbType.VarChar,15).Value =parUsuario.Nombre);

    Puedes simplificar tu código.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Gabriela345 sábado, 30 de julio de 2016 18:49
    sábado, 30 de julio de 2016 18:05

Todas las respuestas

  • Hola Gabriela345,

    De qué tamaño estás creando el campo contraseña? No será un varchar(15) no? Ya que si le pones un tamaño y le mandas un valor con mayor longitud, este solo tomará lo que le asignas al campo.

    Además cuando creas el parámetro el atributo Size es el tamaño máximo de datos en la columna.

    Si en tu BD estableces un campo :

    Nombre varchar(15)
    SqlComando.Parameters.Add(new SqlParameter("@Nombre",SqlDbType.VarChar,15).Value =parUsuario.Nombre);

    Puedes simplificar tu código.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Gabriela345 sábado, 30 de julio de 2016 18:49
    sábado, 30 de julio de 2016 18:05
  • Gracias por responder ya lo resolvi y eran eso mismo
    sábado, 30 de julio de 2016 18:48