Come promesso nel post precedente, ecco il codice per criptare i valori prima di memorizzarli all'interno di una colonna:
--creazione di una tabella di esempio
create table tab1 (id int, cardno varbinary(max))
--si crea la master key
create master key encryption by password = 'Passw0rd!'
--si crea il certificato
create certificate foo with subject = 'foo'
--si crea una chiave e la si protegge con il certificato creato in precedenza
create symmetric key fookey with algorithm = triple_des encryption by certificate foo
--si notifica a SQL che si desidera usare la chiave
open symmetric key fookey using certificate foo
--si inseriscono i valori e si criptano quelli desiderati
insert tab1(id, cardno) values (1, encryptByKey(Key_GUID('fookey'), '12345678'))
--così facendo vedo i valori criptati. Nel caso un cui non avessi aperto la chiave vedrei dei valori NULL
select * from tab1
--così invece posso accedere al valore decriptato
select cast(decryptByKey(cardno) as varchar(50)) from tab1
--chiudo la chiave una volta che ho finito
close symmetric key fookey
L'algoritmo utilizzato può essere, come in questo caso, triple_des, ma sono supportati numerosi altri algortimi. Che dire? Grandioso! (come tutte le altre feature si SQL Server 2005 a dire il vero )