CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 login clave encriptada

(1/1)

Sagma:
he buscado en la web la manera de encriptar la clave a un login, pile con el SHA1, todo ok.

Pero ahora, necesito su ayuda ya que no se como hacerlo, que para cuando en el login ponga la clave y este lo lea para poder ingresar al form. lo estoy haciendo en VBnet 2003.

esta es el codigo para encriptar la clave.


--- Código: vb.net ---             ' Convertir a SHA1 la clave introducida            Dim claveSHA As String = Me.generarClaveSHA1(Me.txt_password.Text)     Private Function generarClaveSHA1(ByVal nombre As String) As String        ' Crear una clave SHA1 como la generada por         ' FormsAuthentication.HashPasswordForStoringInConfigFile        ' Adaptada del ejemplo de la ayuda en la descripción de SHA1 (Clase)        Dim enc As New UTF8Encoding        Dim data() As Byte = enc.GetBytes(nombre)        Dim result() As Byte         Dim sha As New SHA1CryptoServiceProvider        ' This is one implementation of the abstract class SHA1.        result = sha.ComputeHash(data)        '        ' Convertir los valores en hexadecimal        ' cuando tiene una cifra hay que rellenarlo con cero        ' para que siempre ocupen dos dígitos.        Dim sb As New StringBuilder        For i As Integer = 0 To result.Length - 1            If result(i) < 16 Then                sb.Append("0")            End If            sb.Append(result(i).ToString("x"))        Next        '        Return sb.ToString.ToUpper    End Function  
y esta parte es en el formulario del login.


--- Código: vb.net ---         Dim dtUsr As DataTable = Ad.EjecturarConsulta("Select * From cuusuari Where cuuslogi = '" & Me.txt_usuario.Text & "' And cuuspass = '" & Me.txt_clave.Text & "'")         'Si el dataset obtuvo un registro es que si es valido el Usuario y la clave         If dtUsr.Rows.Count = 1 Then             Usuario = dtUsr.Rows(0)(2)            Clave = dtUsr.Rows(0)(3)            CodigoUsr = dtUsr.Rows(0)(0)  agradesco su ayuda

Nebire:

--- Cita de: "Sagma" ---he buscado en la web la manera de encriptar la clave a un login, pile con el SHA1, todo ok.

Pero ahora, necesito su ayuda ya que no se como hacerlo, que para cuando en el login ponga la clave y este lo lea para poder ingresar al form. lo estoy haciendo en VBnet 2003.

esta es el codigo para encriptar la clave.


--- Código: vb.net ---            ' Convertir los valores en hexadecimal        ' cuando tiene una cifra hay que rellenarlo con cero        ' para que siempre ocupen dos dígitos.        Dim sb As New StringBuilder        For i As Integer = 0 To result.Length - 1            If result(i) < 16 Then                sb.Append("0")            End If            sb.Append(result(i).ToString("x"))        Next        '        Return sb.ToString.ToUpper    

--- Fin de la cita ---

Al llegar aquí me pierdo y no se qué pretendes hacer...
Veamos ...:
1º ) porqué necesitas convertir los datos a Hexadecimal ... ? lo requiere una operación futura ?, es algo que has decidido añadir tú para hacer posteriores operaciones ?
2º ) porqué haces: 'if result(i) <16 then... ' ? se supone que result ofrece una cadena de caracteres alfanuméricos o de caracteres hexadecimales ?. si la cadena devuelta es alfanumérica, entonces result(i) podrá ser arbitrariamente "v", "K", "-", "4", etc... por tanto cuando le pides '< 16' siempre dará TRUE, con lo que el resultado para una cadena codificada pongamos por comodidad que la cadena resul fuera 'Guay30' el resultado de ese bucle sería el sigiente: G0XU0XA0XY0X30X00X ... que dudo mucho sea lo que realmente quieras conseguir. En cambio si la cadena es hexadecimal, lo veo peor, porque tu no tendrás forma de saber si: 456FA21BBC es de la forma siguiente (en orden inverso) CB B1 2A F6 54 o si es C... le añades un '0'  o la 'B' y luego si es C0, lo siguiente será BB ó B0, pero si fuera CB lo sigiuente sería B1 o nuevamente sólo B... no lo veo

Creo que el error lo cometes previamente, pero en fin si me aclaras esto sabré donde quieres ir a parar y corregirte desde donde te equivocas.
Además en es bucle encuentro de entrada 2 errores, en que añades el '0' detrás es decir que si tenemos 9, en vez de convertirlo a 09 lo estás conviertiendo en 90.... y otro es que si una cadena la evaluas como un número debes tener presente que los nº se leen de derecha a izquierda, es decir la cadena: 'RADIO' , primero leemos la R y al final la O, pero si tenemos una cadena como '23456, y queremos operar con ella tratándola como número dbemos considerar que la 1ª cifra es el 6 y la última el 2....   Pero que te quede claro que éste no son los únicos peros... responde mis preguntas una a una y podré darte indicaciones...

Sagma:
hola, mil disculpas por las molestias, ya encontre lo que buscaba.

El ejemplo lo he sacado desde aca:

http://www.elguille.info/NET/dotnet/comprobar_usuario_usando_base_datos_vb2003.htm

gracias  :D

Navegación

[0] Índice de Mensajes

Ir a la versión completa