USE DB_Encrypt_Demo
GO
--创建证书
CREATE CERTIFICATE cert_Demo --证书名称
ENCRYPTION BY PASSWORD ='asdfG!!!'--加密证书的密码
WITH SUBJECT ='DB_Encrypt_Demo Database Encryption Certificate',--证书主题
START_DATE ='3/14/2011', EXPIRY_DATE ='10/20/2012'--起止日期
GO 示例二、查看数据库中的证书
使用目录视图sys.certificates(http://msdn.microsoft.com/en-us/library/ms189774.aspx)来查看。
--查看当前数据库中的证书
use DB_Encrypt_Demo
go
--查看证书
SELECT name, pvt_key_encryption_type_desc, issuer_name
FROM sys.certificates
----结果返回
/*
name pvt_key_encryption_type_desc issuer_name
cert_Demo ENCRYPTED_BY_PASSWORD DB_Encrypt_Demo Database Encryption Certificate
*/ 示例三、备份和还原证书
创建证书后,也可以使用BACKUP CERTIFICATE(http://msdn.microsoft.com/en-us/library/ms178578.aspx)命令备份到文件,为了安全地保存或在其他数据库中还原它。
--备份证书
BACKUP CERTIFICATE cert_Demo
TOFILE='H:\SqlBackup\certDemo.BAK'--证书备份路径,用来加密
WITH PRIVATE KEY (FILE='H:\SqlBackup\certDemoPK.BAK',--证书私钥文件路径,用来解密
ENCRYPTION BY PASSWORD ='1234GH!!!',--加密私钥密码
DECRYPTION BY PASSWORD ='asdfG!!!' )--解密私钥密码
--备份后,可以在其他数据库中使用这个证书,或使用DROP CERTIFICATE命令删除它。
DROP CERTIFICATE cert_Demo
GO
--从备份文件中还原证书到数据库中
CREATE CERTIFICATE cert_Demo
FROMFILE='H:\SqlBackup\certDemo.BAK'
WITH PRIVATE KEY (FILE='H:\SqlBackup\certDemoPK.BAK',
DECRYPTION BY PASSWORD ='1234GH!!!' ,--解密私钥密码
ENCRYPTION BY PASSWORD ='asdfG!!!')--加密私钥密码 示例四、管理证书的私钥
使用ALTER CERTIFICATE( http://msdn.microsoft.com/en-us/library/ms189511.aspx)命令为证书增加或删除私钥。这个命令允许删除私钥(默认通过数据库主密钥时行加密)、增加私钥或修改私钥的密码。
--从证书中删除私钥
ALTER CERTIFICATE cert_Demo
REMOVE PRIVATE KEY
--从备份文件为既有证书重新增加私钥
ALTER CERTIFICATE cert_Demo
WITH PRIVATE KEY
(FILE='H:\SqlBackup\certDemoPK.BAK',
DECRYPTION BY PASSWORD ='1234GH!!!' ,--解密私钥密码
ENCRYPTION BY PASSWORD ='asdfG!!!')--加密私钥密码
--修改既有私钥的密码
ALTER CERTIFICATE cert_Demo
WITH PRIVATE KEY (DECRYPTION BY PASSWORD ='asdfG!!!',
ENCRYPTION BY PASSWORD ='mynewpassword!!!13E') 示例五、使用证书加密和解密。
使用函数EncryptByCert加密数据。(http://msdn.microsoft.com/zh-cn/library/ms174361.aspx)
--从证书中删除私钥
ALTER CERTIFICATE cert_Demo
REMOVE PRIVATE KEY
--从备份文件为既有证书重新增加私钥
ALTER CERTIFICATE cert_Demo
WITH PRIVATE KEY
(FILE='H:\SqlBackup\certDemoPK.BAK',
DECRYPTION BY PASSWORD ='1234GH!!!' ,--解密私钥密码
ENCRYPTION BY PASSWORD ='asdfG!!!')--加密私钥密码
--修改既有私钥的密码
ALTER CERTIFICATE cert_Demo
WITH PRIVATE KEY (DECRYPTION BY PASSWORD ='asdfG!!!',
ENCRYPTION BY PASSWORD ='mynewpassword!!!13E') 下面是一个例子: