DEV Community

Roberto Vale
Roberto Vale

Posted on

Criptografia para DB

--Criar master
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '314159265359'
GO

--Criar certificado
CREATE CERTIFICATE [CertificadoT1] WITH SUBJECT = 'CERTIFICADO teste1', EXPIRY_DATE = '9999/12/31 23:59:59.997'
GO

--Criar chave
CREATE SYMMETRIC KEY ChaveT1 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE [CertificadoT1];
GO

--adiciona o campo varbinary na tabela para gravar o criptografado
ALTER TABLE [dbo].[tab01] ADD senha varbinary(256);

---inserindo o valor criptografado

-- Abro a chave
OPEN SYMMETRIC KEY ChaveT1 DECRYPTION BY CERTIFICATE [CertificadoT1];

---Pego o guid da chave
DECLARE @GUID UNIQUEIDENTIFIER = (SELECT KEY_GUID('ChaveT1'))

--insiro na base o valor criptografado
insert into [dbo].tab01
values(3,'testeCertificadoT1',ENCRYPTBYKEY(@GUID, 'xxxxxteste123'))

--fecho a chave do sistema
CLOSE SYMMETRIC KEY ChaveT1

---lendo o valor criptografado

OPEN SYMMETRIC KEY ChaveT1 DECRYPTION BY CERTIFICATE [CertificadoT1];

SELECT
cod,
nome,
CONVERT(varchar, DecryptByKey(senha)) senha
FROM [dbo].[tab01]

CLOSE SYMMETRIC KEY ChaveT1

---Salvando o certificado para exportar

BACKUP CERTIFICATE [CertificadoT1]
TO FILE = 'C:\certificacao\CertificadoT1.CER'
WITH PRIVATE KEY (FILE = 'C:\certificacao\ChaveT1.PVK',
ENCRYPTION BY PASSWORD = '16180')

Top comments (0)