o) SELECT DATALENGTH(ENCRYPTBYKEY(KEY_GUID(‘SymKey123’),CONVERT(VARCHAR(MAX ),AddressLine1)))
p) FROM Person.Address
q) GO
r) –把加密后数据更新到原来另外的列上
s) UPDATE Person.Address
t) SET AddressLine2=ENCRYPTBYKEY(KEY_GUID(‘SymKey123’),CONVERT(VARCHAR(max),AddressLine1))
u) –解密:解密过程同样需要OPEN SYMMETRIC KEY ,且需要利用DECRYPTBYKEY 和CONVERT函数
v) OPEN SYMMETRIC KEY SymKey123 DECRYPTION BY PASSWORD=’P@ssw0rd’;
w)
x) SELECT AddressID,CONVERT(VARCHAR(MAX ) ,CONVERT (VARCHAR(MAX ),DECRYPTBYKEY(AddressLine2)))
y) FROM Person.Address
3、非对称密钥:
a) –非对称密钥使用两种不同的密钥,所以加密是是不需要输入密码验证,但解密时就需要
b) USE AdventureWorks
c) GO
d) CREATE ASYMMETRIC KEY AsymKey123 WITH ALGORITHM=RSA_2048 ENCRYPTION BY PASSWORD=’P@ssw0rd’;
e) GO
f)
g) –添加新列存储加密后的数据
h) ALTER TABLE Person.Address ADD AddressLine3 nvarchar(MAX)
i) GO
j) –进行加密
k) SELECT *,ENCRYPTBYASYMKEY(ASYMKEY_ID (‘AsymKey123’),CONVERT(VARCHAR(MAX ),AddressLine1))
l) FROM Person.Address
m) GO
n)
o) –把数据更新到一个新列
p) UPDATE Person.Address
q) SET AddressLine3=ENCRYPTBYASYMKEY(ASYMKEY_ID (‘AsymKey123’),CONVERT(VARCHAR(MAX ),AddressLine1))
r)
s)
t) SELECT *–addressline3
u) FROM Person.Address
v)
w) –解密:此过程一定要使用密码来解密,此处的类型要与加密时相同,比如加密时用varchar,而这里用nvarchar的话是解密不了的。
x) SELECT TOP 10 AddressID,CONVERT(VARCHAR(MAX),CONVERT (VARCHAR(MAX ),DECRYPTBYASYMKEY(ASYMKEY_ID(‘AsymKey123′),AddressLine3,N’P@ssw0rd’))) AS Decryptedata
y) FROM Person.Address
4、证书加密:
a) –证书加密:首先建立证书(certificate)
b) CREATE CERTIFICATE certKey123–证书名
c) ENCRYPTION BY PASSWORD=’P@ssw0rd’–密码
d) WITH SUBJECT=’Address Certificate’,–证书描述
e) START_DATE=’2012/06/18′,–证书生效日期
f) EXPIRY_DATE=’2013/06/18′ ;–证书到期日
g) GO
h) –利用证书加密
i) SELECT *,ENCRYPTBYCERT(CERT_ID(‘certKey123’),CONVERT (VARCHAR(MAX ),AddressLine1)) cyberAddress
j) FROM Person.Address
k)
l) –添加新列存放加密数据
m) ALTER TABLE Person.Address ADD AddressLine4 Nvarchar(MAX )
n)
o) –把加密后数据放到新列
p) UPDATE Person.Address
q) SET AddressLine4=ENCRYPTBYCERT(CERT_ID(‘certKey123’),CONVERT (VARCHAR(MAX ),AddressLine1))
r)
s) –解密
t) SELECT AddressID,CONVERT(VARCHAR(MAX ),CONVERT(VARCHAR(MAX ),DECRYPTBYCERT(CERT_ID(‘certKey123′),AddressLine4,N’P@ssw0rd’))) DecryAddress










