SQL Server 2005 consente di criptare/decriptare i campi di un record utilizzando chiavi simmetriche, asimmetriche e certificati digitali. Ad esempio, per creare una chiave simmetrica si deve usare la seguente istruzione:
CREATE SYMMETRIC KEY ChiaveSimmetrica WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'pippo';
A questo punto, è possibile utilizzare le funzioni EncryptByKey e DecryptByKey di SQL Server, rispettivamente, per criptare e decriptare i dati specificati. Perché la procedura sia corretta, tuttavia, è necessario aprire la chiave simmetrica prima di richiamare tali funzioni, altrimenti il loro risultato sarà sempre NULL. Detto in codice:
OPEN SYMMETRIC KEY ChiaveSimmetrica DECRYPTION BY PASSWORD = 'pippo'
INSERT INTO Users(UserName, Comments) VALUES('Marco',
EncryptByKey(KEY_GUID('ChiaveSimmetrica'), 'Il mio primo commento cifrato'));
Nell'esempio, il campo UserName è di tipo NVARCHAR(50), mentre Comments è VARBINARY(8000). Questi comandi producono il risultato voluto; se, invece, si esegue solo il secondo, nel campo Comments sarà inserito il valore NULL. Analogamente per la decriptazione:
OPEN SYMMETRIC KEY ChiaveSimmetrica DECRYPTION BY PASSWORD = 'pippo'
SELECT UserName, CONVERT(VARCHAR, DecryptByKey(Comments)) FROM Users;
Infine, al termine delle operazioni è buona norma chiudere la chiave simmetrica:
CLOSE SYMMETRIC KEY ChiaveSimmetrica