none
Como guardar una password en SQL server

    Pregunta

  • Hola,

    Necesito guardar una paswword proveniente de un textbox.

    Esta passwrod debe ser guardada con algun metodo de ecriptacion quizas MD5 seria bueno.

    Mi pregunta es, ¿Como se hace?

        Sub guardar()
            CN.Open()
            CMD.CommandType = CommandType.Text
            If txtcontraseña.Text <> txtcontraseña2.Text Then
                MessageBox.Show("La contraseña ingresada no son iguales", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                CMD.CommandText = "INSERT INTO tblusuarios VALUES('" & txtid.Text & "','" & txtnombre.Text & "','" & txtcontraseña.Text & "','" & combotipo.Text & "')"
                CMD.ExecuteNonQuery()
                MessageBox.Show("El usuario fue creado...")
            End If
            CN.Close()
        End Sub
    Ese es el codigo que hice para guardar los datos, como se ve no tiene ninguna ecriptación.

    atento a sus comentarios.

    Saludos.
    jueves, 18 de junio de 2009 3:52

Respuestas

  • :-)
    Hola,

    Ante todo un consejo: No concatenes tu SQL a partir de los valores de los campos de texto, usa la colección Paramaters del Command. TE lo digo porque si el usuario introduce un carácter (') verás un bonito error, por no mencionar si le da por usar SQL Injection...

    Por otro lado, para guardar un password, lo mejor es usar MD5 para obtener el HASH y guardarlo en la BD. De este modo, cuando el usuario introduce su password para entrar, haces el mismo proceso: Sacas el HASH del password introducido y lo comparas con el de la BD.

    Este código genera el valor HASH de un string mediante MD5:

    Imports System.Security.Cryptography
    Imports System.Text
        Private Sub endButton_Click(sender As Object, e As EventArgs) Handles endButton.Click
            MessageBox.Show(encodePassword("pepeillo"))
        End Sub
        Public Function encodePassword(ByVal originalPassword As String) As String
            Dim md5 As MD5 = New MD5CryptoServiceProvider()
            Dim originalBytes() As Byte = ASCIIEncoding.Default.GetBytes(originalPassword)
            Dim encodedBytes() As Byte = md5.ComputeHash(originalBytes)
            Return Convert.ToBase64String(encodedBytes)
        End Function
    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco


    jueves, 18 de junio de 2009 14:15

Todas las respuestas

  • hola
    si lo que quieres es abrir la Base con codigo puedes probar asi
    "Data Source=|DataDirectory|\MyDatabase#2.sdf;Password=aaaaa#aaaaa1"
    
    
    
    
    
    

    y si lo que quieres es que cada usuario tenga una cantraseña y luego que la inserten para lo que sea tendras que guardarla en una columna y que cada fila de usuario tenga esa contraseña

    Primero comprueba la contraseña del usuario :
    "SELECT        ColumnaDato1 , ColumnaPassword1 , ColumnaUsuario1
    FROM            Tabla1
    WHERE        (ColumnaUsuario1 = @ColumnaUsuario1)"

    para que funcione le pondrias un If que manege la vuelta del Pasword , por si no coincide salte el mensage de " La contraseña no es correcta "
    y despues reescrive el o los datos

    "UPDATE   Tabla1
     SET     ColumnaDato1 = @InColumnaDato1   
    WHERE    (ColumnaUsuario1 = @ColumnaUsuario1) "

     

    espero que sirva de halgo , yo esque siempre utilizo Query para trabajar desconectodo

    • Propuesto como respuesta IvanOnilDj jueves, 18 de junio de 2009 8:37
    jueves, 18 de junio de 2009 8:35
  • :-)
    Hola,

    Ante todo un consejo: No concatenes tu SQL a partir de los valores de los campos de texto, usa la colección Paramaters del Command. TE lo digo porque si el usuario introduce un carácter (') verás un bonito error, por no mencionar si le da por usar SQL Injection...

    Por otro lado, para guardar un password, lo mejor es usar MD5 para obtener el HASH y guardarlo en la BD. De este modo, cuando el usuario introduce su password para entrar, haces el mismo proceso: Sacas el HASH del password introducido y lo comparas con el de la BD.

    Este código genera el valor HASH de un string mediante MD5:

    Imports System.Security.Cryptography
    Imports System.Text
        Private Sub endButton_Click(sender As Object, e As EventArgs) Handles endButton.Click
            MessageBox.Show(encodePassword("pepeillo"))
        End Sub
        Public Function encodePassword(ByVal originalPassword As String) As String
            Dim md5 As MD5 = New MD5CryptoServiceProvider()
            Dim originalBytes() As Byte = ASCIIEncoding.Default.GetBytes(originalPassword)
            Dim encodedBytes() As Byte = md5.ComputeHash(originalBytes)
            Return Convert.ToBase64String(encodedBytes)
        End Function
    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco


    jueves, 18 de junio de 2009 14:15
  • las forma facil de guardarla es:

    FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text,

    "MD5")

    ese valor lo almacena como un dato cualquiera


    jaysson
    jueves, 18 de junio de 2009 22:07