Algortimo de encriptación SHA
Publicado por José Luis Navarro (1 intervención) el 28/03/2007 00:03:53
Buenas tardes.
Tengo una base de datos en SQL Server 2005 con una tabla de Usuarios definida asi
CREATE TABLE [dbo].[Usuarios](
[usuario] [varchar](50) NULL,
[clave] [nvarchar](40) NULL
)
inserté un registro de la siguiente manera
insert into usuarios values ( 'prueba', 'clave')
para fines de aplicar la encriptación SHA1, cree el siguiente script
DECLARE @claveSHA nvarchar(40);
SELECT @claveSHA = CONVERT(nvarchar(40),'clave');
print HashBytes('sha1', @claveSHA)
update Usuarios set clave = HashBytes('sha1', @claveSHA) where usuario = 'prueba'
Luego desarrollo el formulario en Visual Basic .Net, creo una función que me calcule la clave SHA1
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 System.Text.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
El problema que tengo es que ambas claves generadas tanto por SQL Server como por Visual .Net no coinciden, dónde la estoy embarrando?
Tengo una base de datos en SQL Server 2005 con una tabla de Usuarios definida asi
CREATE TABLE [dbo].[Usuarios](
[usuario] [varchar](50) NULL,
[clave] [nvarchar](40) NULL
)
inserté un registro de la siguiente manera
insert into usuarios values ( 'prueba', 'clave')
para fines de aplicar la encriptación SHA1, cree el siguiente script
DECLARE @claveSHA nvarchar(40);
SELECT @claveSHA = CONVERT(nvarchar(40),'clave');
print HashBytes('sha1', @claveSHA)
update Usuarios set clave = HashBytes('sha1', @claveSHA) where usuario = 'prueba'
Luego desarrollo el formulario en Visual Basic .Net, creo una función que me calcule la clave SHA1
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 System.Text.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
El problema que tengo es que ambas claves generadas tanto por SQL Server como por Visual .Net no coinciden, dónde la estoy embarrando?
Valora esta pregunta


0