--
--5.8.2节示例
--
--创建主密钥
USE TestDB1;
GO
CREATE MASTER KEY --创建主密钥
ENCRYPTION BY PASSWORD ='P@ssw0rd' --指定密码
--创建证书
USE TestDB1;
GO
CREATE CERTIFICATE AdminPwdCert
WITH SUBJECT = 'TO Encrypt Admin Password', --证书的主题
EXPIRY_DATE = '2009/1/1';--证书的过期日期
--创建对称密钥
USE TestDB1;
GO
CREATE SYMMETRIC KEY PwdKey
WITH ALGORITHM = AES_256 --使用AES 256加密算法
ENCRYPTION BY CERTIFICATE AdminPwdCert;--使用证书加密
--打开对称密钥
OPEN SYMMETRIC KEY PwdKey
DECRYPTION BY CERTIFICATE AdminPwdCert
--插入加密数据
CREATE TABLE AdminUser
(
LoginName varchar(50) NOT NULL PRIMARY KEY,
Password varbinary(500) NOT NULL
)
GO
INSERT INTO AdminUser
VALUES('admin1',EncryptByKey(Key_GUID('PwdKey'), 'p@ssw0rd1')) --加密数据
--解密数据
SELECT LoginName,Password --直接查询的内容将不可读
FROM AdminUser
SELECT LoginName,CONVERT(varchar(50),DecryptByKey(Password)) –解密出明文
FROM AdminUser
--
--5.8.3节示例
--
--创建证书
USE TestDB1;
GO
CREATE CERTIFICATE WageCert
WITH SUBJECT = 'TO Encrypt Wage', --证书的主题
EXPIRY_DATE = '2009/12/31';--证书的过期日期
--使用证书加密数据
CREATE TABLE Employee
(
EmpID int NOT NULL PRIMARY KEY,
Wage varbinary(500) NOT NULL --工资字段,加密后为二进制数据
)
GO
INSERT INTO Employee
VALUES(1, EncryptByCert(Cert_ID('WageCert'),'5000')) --使用证书加密
--使用证书解密数据
SELECT * --直接查询数据,Wage字段是加密的
FROM Employee
SELECT EmpID,CONVERT(varchar(50),
DECRYPTBYCERT(Cert_ID('WageCert'),Wage)) --使用证书解密Wage字段
FROM Employee
--
--5.8.4节示例
--
--创建数据库主密钥
USE master;
GO
CREATE MASTER KEY –创建数据库主密钥
ENCRYPTION BY PASSWORD = 'password';
--创建证书
USE master;
GO
CREATE CERTIFICATE --创建证书
tdeCert WITH SUBJECT = 'use to TDE';
--创建加密密钥
USE TestDB1;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256 --指定加密算法
ENCRYPTION BY SERVER CERTIFICATE tdeCert;
--修改数据库开启TDE
ALTER DATABASE TestDB1
SET ENCRYPTION ON --修改数据库,开启透明数据加密