• Viernes 8 de Noviembre de 2024, 13:58

Autor Tema:  login clave encriptada  (Leído 2383 veces)

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
login clave encriptada
« en: Miércoles 13 de Mayo de 2009, 22:12 »
0
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
  1.  
  2.             ' Convertir a SHA1 la clave introducida
  3.             Dim claveSHA As String = Me.generarClaveSHA1(Me.txt_password.Text)
  4.  
  5.     Private Function generarClaveSHA1(ByVal nombre As String) As String
  6.         ' Crear una clave SHA1 como la generada por
  7.         ' FormsAuthentication.HashPasswordForStoringInConfigFile
  8.         ' Adaptada del ejemplo de la ayuda en la descripción de SHA1 (Clase)
  9.         Dim enc As New UTF8Encoding
  10.         Dim data() As Byte = enc.GetBytes(nombre)
  11.         Dim result() As Byte
  12.  
  13.         Dim sha As New SHA1CryptoServiceProvider
  14.         ' This is one implementation of the abstract class SHA1.
  15.         result = sha.ComputeHash(data)
  16.         '
  17.         ' Convertir los valores en hexadecimal
  18.         ' cuando tiene una cifra hay que rellenarlo con cero
  19.         ' para que siempre ocupen dos dígitos.
  20.         Dim sb As New StringBuilder
  21.         For i As Integer = 0 To result.Length - 1
  22.             If result(i) < 16 Then
  23.                 sb.Append("0")
  24.             End If
  25.             sb.Append(result(i).ToString("x"))
  26.         Next
  27.         '
  28.         Return sb.ToString.ToUpper
  29.     End Function
  30.  
  31.  

y esta parte es en el formulario del login.

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

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: login clave encriptada
« Respuesta #1 en: Jueves 14 de Mayo de 2009, 16:22 »
0
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
  1.  
  2.            ' Convertir los valores en hexadecimal
  3.         ' cuando tiene una cifra hay que rellenarlo con cero
  4.         ' para que siempre ocupen dos dígitos.
  5.         Dim sb As New StringBuilder
  6.         For i As Integer = 0 To result.Length - 1
  7.             If result(i) < 16 Then
  8.                 sb.Append("0")
  9.             End If
  10.             sb.Append(result(i).ToString("x"))
  11.         Next
  12.         '
  13.         Return sb.ToString.ToUpper
  14.  
  15.  
  16.  


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...
«Ma non troppo»
----> ModoVacaciones = False<----

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
Re: login clave encriptada
« Respuesta #2 en: Jueves 14 de Mayo de 2009, 20:34 »
0
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
Sagma