How to encrypt and decrypt data in SQL Server

4

How could I encrypt and decrypt data in a database ?

I have a Users table, with different fields and I want to encrypt the password field.

Note: In the following answer I am working with a database of Users, with their fields id, user, passwordEncriptada, etc ...

    
asked by rencinas 09.11.2016 в 13:24
source

1 answer

3

Encrypt password:

Private Shared Function EncryptPassword(cadenaConexion As String, usuario As String,
    contraseña As String) As String

    Dim parUsuario As New SqlParameter("@usuario", usuario)
    Dim consulta As String = "DECLARE @FraseSuperSegura nvarchar(128);  
                            SET @FraseSuperSegura= N'Ejemplo de frase super segura';
                            UPDATE Usuarios SET
                            Contrasena_EncriptadaPorFraseSegura = EncriptarPorFraseSegura(
                            @FraseSuperSegura , Contrasena, 1, CONVERT(
                            varbinary, usuario)) WHERE usuario = @usuario;"
    Dim objDS As DataSet = SqlHelper.ExecuteDataset(cadenaConexion,
        CommandType.Text, consulta, parUsuario)
End Function

Encrypted Password:

  

0x010000008D2ECCEE535FC014603EDE815ED641278E6D9CFEC20F929149A6B5EC05B8EEEC74C658D08B79D9148515952C76D37D78

Decrypt password:

Private Shared Function DecryptPassword(CadenaConexion As String, Usuario As String, 
    Contraseña As String) As String
    Dim contraseñaDecrypted As String
    Dim parUsuario As New SqlParameter("@usuario", Usuario)
    Dim consulta As String = "DECLARE @FraseSuperSegura varchar(128);  
                            SET @FraseSuperSegura = N'Ejemplo de frase super segura';
                            SELECT usuario, Contrasena_EncriptadaPorFraseSegura, 
                            CONVERT(varchar, DesencriptarPorFraseSegura(@FraseSuperSegura ,
                            Contrasena_EncriptadaPorFraseSegura, 1, CONVERT(  
                            varbinary, usuario))) AS 'Contraseña' FROM Usuarios
                            WHERE usuario = @usuario"
    Dim objDS As DataSet = SqlHelper.ExecuteDataset(
                           CadenaConexion, CommandType.Text, consulta, parUsuario)

    'Compruebo si la contraseña desencriptada es la misma que la introducida por el usuario'  
    If (Contraseña.Equals(objDS.Tables(0).Rows(0).Item(2).ToString())) Then
        contraseñaDecrypted = objDS.Tables(0).Rows(0).Item(2).ToString()
    'Sino, al valor que devuelvo (contraseñaDecrypted) le pongo 1 para controlar el error'
    ElseIf (Usuario.Equals(objDS.Tables(0).Rows(0).Item(0).ToString())) Then
        contraseñaDecrypted = "1"
    End If
    Return contraseñaDecrypted

End Function

User: Test1234

Contrasena_EncriptadaPorFraseSegura:

  

0x010000008D2ECCEE535FC014603EDE815ED641278E6D9CFEC20F929149A6B5EC05B8EEEC74C658D08B79D9148515952C76D37D78

Password: Test1234 +

    
answered by 09.11.2016 / 13:24
source