证书可以在数据库中加密和解密数据。证书包含密钥对、关于证书拥有者的信息、证书可用的开始和结束过期日期。
证书同时包含公钥和密钥,前者用来加密,后者解密。SQL Server可以生成它自己的证书,也可以从外部文件或程序集载入。因为可以备份然后从文件中载入它们,证书比非对称密钥更易于移植,而非对称密钥却做不到。这意味着可以在数据库中方便地重用同一个证书。
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
--查看当前数据库中的证书
use DB_Encrypt_Demo
go
注意:证书和非对称密钥同样的消耗资源。
我们看一组例子:
示例一、创建数据库证书
创建数据库证书:CREATE SYMMETRIC KEY (http://msdn.microsoft.com/en-us/library/ms187798.aspx)
复制代码 代码如下:
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
*/
以上就是SQLServer 2008中的代码安全(七) 证书加密的详细内容,更多请关注0133技术站其它相关文章!