Depois de fazer mais algumas pesquisas, encontrei este artigo em "Cloning" Chaves simétricas .
Você pode instruir a função CREATE SYMMETRIC KEY
para gerar a chave simétrica usando KEY_SOURCE
e IDENTITY_VALUE
. Você pode gerar novamente a mesma chave mais adiante, transmitindo os mesmos valores para KEY_SOURCE
e IDENTITY_VALUE
.
Aqui está um exemplo rápido:
CREATE CERTIFICATE CreditCards
WITH SUBJECT = 'Customer Credit Card Numbers';
GO
CREATE SYMMETRIC KEY CreditCards_Key_01
WITH KEY_SOURCE = 'A pass phrase from which to derive the key.',
IDENTITY_VALUE = 'An identity phrase from which to generate a GUID for tagging data that is encrypted with a temporary key',
ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE CreditCards;
GO
OPEN SYMMETRIC KEY CreditCards_Key_01
DECRYPTION BY CERTIFICATE CreditCards
UPDATE MyTable
SET EncryptedCreditCardNumber = EncryptByKey(Key_GUID('CreditCards_Key_01'), CreditCardNumber);
GO
Para citar Michael Coles de seu artigo
"For my tastes, it would make more sense to require IDENTITY_VALUE and KEY_SOURCE options by default."
Não sei por que eles não fizeram isso dessa forma, ou pelo menos destaque isso no exemplo que eles têm no MSDN!