Wagner,
Estamos falando de qual versão do SQL Server, pois até a versão 2012 tinhamos alguns certificados de criptografia, que depois foram adicionados outros.
O SQL Server possui sim alguns funções para criptografar e descriptografar, mas isso depende muito da maneira e método de criptografia, bem com, de qual certificado foi utilizado.
Você destacou que a coluna é do tipo Varchar(), estranho utilizar esta coluna para se armazenar valores criptografados, por padrão o SQL Server recomendo o uso do tipo de dados Varbinary() ou NVarbinary(), mas podem ser utilizar o NVarchar() ou até mesmo
NChar(), em último caso o Varchar() pode ser adotado, o que não é tão recomendado.
Veja este tradicional exemplo de como podemos criptografar dados no SQL Server até a versão 2012:
--Declarando um variável @HashThis--
DECLARE @MeuValorCriptografado NVarChar(max);
SELECT @MeuValorCriptografado = CONVERT(nvarchar,'Pedro');
/* Utilizando a função HashBytes para converter a sentença
com uso dos Algoritmos Hash + SHA1, SHA, MD5, MD4, MD2 */
SELECT HashBytes('SHA1', @MeuValorCriptografado) Resultado
Union
SELECT HashBytes('SHA', @MeuValorCriptografado)
Union
Select HashBytes('MD5', @MeuValorCriptografado)
Union
Select HashBytes('MD4', @MeuValorCriptografado)
Union
Select HashBytes('MD2', @MeuValorCriptografado)
Union
Select HashBytes('SHA2_256', @MeuValorCriptografado)
Union
Select HashBytes('SHA2_512', @MeuValorCriptografado)
Go
Este outro exemplo, apresenta o uso de criptografia aplicada a uma tabela para uma coluna específica:
CREATE DATABASE CRIPTOGRAFIA
Go
USE CRIPTOGRAFIA
Go
CREATE TABLE MeusDadosCriptografados
(Codigo Int Identity(1,1) Primary Key,
Descricao Varchar(10),
ValorOriginal VarChar(20) Not Null,
ValorCriptografado VarBinary(256))
Go
Insert Into MeusDadosCriptografados (Descricao,ValorOriginal)
Values ('Frase','Oi Mundo')
Insert Into MeusDadosCriptografados (Descricao,ValorOriginal)
Values ('Frase','Este é um Teste')
Go
Select * from MeusDadosCriptografados
Go
-- Criptografando os dados utilizando a função EncryptByPassPhrase --
DECLARE @Frase NVarChar(256)
SET @Frase = 'Esta será a frase utilizada na criptografia dos dados';
UPDATE MeusDadosCriptografados
SET ValorCriptografado = EncryptByPassPhrase(@Frase, ValorOriginal)
Select * from MeusDadosCriptografados
Go
-- Descriptografando os dados utilizando a função DecryptByPassPhrase --
DECLARE @Frase NVarChar(256)
SET @Frase = 'Esta será a frase utilizada na criptografia dos dados';
Select Convert(VarChar(Max),DecryptByPassPhrase(@Frase, ValorCriptografado))
from MeusDadosCriptografados
Go
Select * from MeusDadosCriptografados
Go
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]