SQL Server 2005加密体系(二)

server|加密|体系

SQL Server 2005加密体系(二)
紧接上一篇,再给一段用密钥加密数据的范例,这段代码比较简单,大黄不准像蹂躏大余一样说我灌水!!!

--------------------------------------------------------------------------------

--创建实验用数据库
USE master
IF EXISTS(SELECT [name] FROM sys.databases WHERE [name] = 'Sales')
 DROP DATABASE Sales
CREATE DATABASE Sales
IF EXISTS(SELECT principal_id FROM sys.server_principals WHERE [name] = 'ryan' AND [type] = 'S')
 DROP LOGIN ryan
CREATE lOGIN ryan WITH PASSWORD = 'P@ssw0rd'
IF EXISTS(SELECT principal_id FROM sys.server_principals WHERE [name] = 'teddy' AND [type] = 'S')
 DROP LOGIN teddy
CREATE lOGIN teddy WITH PASSWORD = 'P@ssw0rd'
GO

--创建用户ryan,并创建数据库主密钥
USE Sales
IF EXISTS(SELECT * FROM sys.database_principals WHERE [name] = 'ryan' AND [type] = 'S')
 DROP User ryan
CREATE USER ryan FOR LOGIN ryan WITH DEFAULT_SCHEMA = dbo
GO
IF EXISTS(SELECT * FROM sys.database_principals WHERE [name] = 'teddy' AND [type] = 'S')
 DROP User teddy
CREATE USER teddy FOR LOGIN teddy WITH DEFAULT_SCHEMA = dbo
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd'
GO
--使用服务主密钥加密数据库主密钥,
--在此删除,因为发现数据库主密钥创建时默认及利用服务主密钥加密
--利用服务主密钥加密的数据库主密钥称为自动密钥管理
--可以利用以下查询语句是否启用数据库主密钥的自动密钥管理
SELECT [name], is_master_key_encrypted_by_server FROM sys.databases WHERE [name] = 'Sales'
--以下语句用于启用数据库主密钥的自动管理
--ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO

--为ryan创建证书
IF EXISTS(SELECT [name] FROM sys.certificates WHERE [name] = 'CERT_RYAN')
 DROP CERTIFICATE CERT_RYAN
CREATE CERTIFICATE CERT_RYAN AUTHORIZATION ryan
 --ENCRYPTION BY PASSWORD = 'P@ssw0rd'
   --建议不要使用密码,因为经过测试,是用密码的证书是利用密码保护,
   --而非数据库主密钥,可用以下语句测试证书的加密方法
   --SELECT [name], pvt_key_encryption_type_desc FROM sys.certificates
   --WHERE [name] = 'CERT_DB'
 WITH SUBJECT = 'Certificate For Database',
 START_DATE = '01/01/2006',
 EXPIRY_DATE = '12/31/2015'
GO
--为teddy创建证书
IF EXISTS(SELECT [name] FROM sys.certificates WHERE [name] = 'CERT_TEDDY')
 DROP CERTIFICATE CERT_TEDDY
CREATE CERTIFICATE CERT_TEDDY AUTHORIZATION teddy
 --ENCRYPTION BY PASSWORD = 'P@ssw0rd'
   --建议不要使用密码,因为经过测试,是用密码的证书是利用密码保护,
   --而非数据库主密钥,可用以下语句测试证书的加密方法
   --SELECT [name], pvt_key_encryption_type_desc FROM sys.certificates
   --WHERE [name] = 'CERT_DB'
 WITH SUBJECT = 'Certificate For Database',
 START_DATE = '01/01/2006',
 EXPIRY_DATE = '12/31/2015'
GO

SELECT * FROM sys.certificates

--为ryan和teddy分别创建利用证书保护的对称密码
CREATE SYMMETRIC KEY Key_SYM_RYAN AUTHORIZATION ryan
 WITH ALGORITHM = TRIPLE_DES
 ENCRYPTION BY CERTIFICATE CERT_RYAN
GO
CREATE SYMMETRIC KEY Key_SYM_TEDDY AUTHORIZATION teddy
 WITH ALGORITHM = TRIPLE_DES
 ENCRYPTION BY CERTIFICATE CERT_TEDDY
GO

--创建测试用表
IF EXISTS(SELECT [name] FROM sys.tables WHERE [name] = 'encryption')
 DROP TABLE encryption
CREATE TABLE dbo.encryption
(
 PT nchar(10),       --Plain Text
 ET varbinary(128),  --Encrypted Text
)
GO
GRANT SELECT, INSERT ON encryption TO ryan
GRANT SELECT, INSERT ON encryption TO teddy

--完成准备工作,开始测试加密
EXECUTE AS LOGIN = 'ryan'
OPEN SYMMETRIC KEY Key_SYM_RYAN DECRYPTION BY CERTIFICATE CERT_RYAN
INSERT INTO encryption
 VALUES (N'RYAN',EncryptByKey(Key_GUID('Key_SYM_RYAN'), N'RYAN'))
CLOSE ALL SYMMETRIC KEYS
REVERT

EXECUTE AS LOGIN = 'teddy'
OPEN SYMMETRIC KEY Key_SYM_TEDDY DECRYPTION BY CERTIFICATE CERT_TEDDY
INSERT INTO encryption
 VALUES (N'TEDDY',EncryptByKey(Key_GUID('Key_SYM_TEDDY'), N'TEDDY'))
CLOSE ALL SYMMETRIC KEYS
REVERT

--测试数据已经被加密
SELECT * FROM encryption

--解密数据
EXECUTE AS LOGIN = 'ryan'
OPEN SYMMETRIC KEY Key_SYM_RYAN DECRYPTION BY CERTIFICATE CERT_RYAN
SELECT PT, CONVERT(nchar,DecryptByKey(ET)) AS ET FROM encryption
CLOSE ALL SYMMETRIC KEYS
REVERT
EXECUTE AS LOGIN = 'teddy'
OPEN SYMMETRIC KEY Key_SYM_TEDDY DECRYPTION BY CERTIFICATE CERT_TEDDY
SELECT PT, CONVERT(nchar,DecryptByKey(ET)) AS ET FROM encryption
CLOSE ALL SYMMETRIC KEYS
REVERT

 

时间: 2024-07-28 16:50:06

SQL Server 2005加密体系(二)的相关文章

SQL Server 2005加密体系(一)

server|加密|体系 SQL Server 2005加密体系(一)SQL Server 2005中引入了一套完整的加密方法,具体的术语呢就偷个懒不写了,大家可以看BOL么. 大致的结构呢就是在安装sQL Server 2005的时候利用SQL Server服务账号生成一个服务主密钥Service Master Key,然后数据库的管理员可以在数据库上创建Database Master Key,当然也可以不创建,同时数据库管理员可以为Database User创建证书.对称密钥或者非对称密钥.

详述SQL Server 2005对称密钥加密技术

介绍 SQL Server 2005一个令人激动的特性是内置了加密的功能.在这个新版的SQL Server中,开发团队直接在T-SQL中加入了加密工具.证书创建和密钥管理的功能.对于因为法律要求或商业需求而需要加密表中的数据的人来说,这是一个好礼物.对于犹豫是否用加密来保证数据安全的人来说,做决定也更容易了.这篇文章介绍新的加密功能是怎么工作,怎么使用. TSQL现在支持使用对称密钥和非对称密钥,证书和密码.本文介绍如何创建.管理和使用对称密钥和证书. 根据涉及的内容,我决定把本文分为三节: 第

实验二:SQL server 2005高可用性之----数据库镜像

如转载,请注明出处:http://blog.csdn.net/robinson_0612/archive/2009/11/04/4769060.aspx       SQL server 2005高可用性之数据库镜像,是SQL server 2005的新技术之一,是一种基于软件的高可用性解决方案,可以对不同服务器或同一服务器不同实例之间的数据库实验无数据延迟,自动故障转移的热备份.数据库镜像是基于数据库级别的,只适用于使用完整恢复模式的数据库.       一.实验目的:掌握SQL server

sql server 解密-请问Microsoft SQL Server 2005数据库中加密记录解密方法

问题描述 请问Microsoft SQL Server 2005数据库中加密记录解密方法 请问Microsoft SQL Server 2005数据库中类似 0MHCkgK7c4E= 的记录(共12位)是使用什么算法加密得到的?能否提供解密的方式或网址,谢谢! 解决方案 有些用到了base64来加密

用SQL Server 2005索引视图提高性能二

视图限制 如要在 SQL Server 2005 中的视图上创建一个索引,相应的视图定义必须包含: ANY.NOT ANY OPENROWSET.OPENQUERY.OPENDATASOURCE 不精确的(浮型.实型)值上的算术 OPENXML COMPUTE.COMPUTE BY ORDER BY CONVERT 生成一个不精确的结果 OUTER 联接 COUNT(*) 引用带有一个已禁用的聚集索引的基表 GROUP BY ALL 引用不同数据库中的表或函数 派生的表(FROM 列表中的子查询

SQL Server 2005你了解多少?

 很多人关心的和担心的都是SQL Server 2005 相对它的前版本SQL Server 2000所做的重大改进或新增功能. 在我升级到SQL2005之后,不得不说的:你也值得拥有.(套用一句广告语,呵呵) 我总结了一下个人认为SQL Server 2005 中最值得你为之升级的10 个理由.无论你是想了解或学习SQL Server 2005,还是正在评估或考虑升级到SQL Server 2005,我相信当时你看完这篇帖子一定会对你的决定起到参考作用. 升级理由一:数据分区 只有到了2005

SQL Server 2005新特性

一.企业级数据管理 在当今的互联世界中,数据和管理数据的系统必须始终为用户可用且能够确保安全,有了SQL Server 2005,组织内的用户和IT专家将从减少应用程序宕机时间.提高可伸缩性及性能.更紧密的安全控制中获益.SQL Server 2005 也包括了很多新的和改进的功能来帮助企业的IT团队更有效率的工作.SQL Server 2005 包括了几个在企业级数据管理中关键的增强: 易管理 可用性 可伸缩性 安全性 1.易管理 SQL Server 2005 能够更为简单的部署.管理和优化

SQL Server 2005 中的商务智能和数据仓库(1)

本文概述了 SQL Server 2005 Beta 2 中"商务智能"平台的增强功能.本文并非实施指南,而是为读者提供了关于"商务智能"平台增强功能的信息. 一.简介 Microsoft SQL Server 2005 是一个完整的商务智能 (BI) 平台,其中为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性.工具和功能.本文简要介绍了您在构建分析应用程序时将要用到的一些工具,并着重介绍了一些新增功能,这些新增功能使复杂 BI 系统的构建和管理比以往更

SQL Server 2005 Service Broker 初探

本文概述了如何利用 SQL Server 2005 中新增的 Service Broker 功能,加快并简化基于异步排队操作的 SQL Server 应用程序的开发过程.(请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解.) 一.引言 SQL Server 2005 的一个主要成就是可以实现可靠.可扩展且功能完善的数据库应用程序.与 .NET Framework 2.0 公共语言运行库 (CLR) 的集成使开发人员可以将重要的业务逻辑与存储过程合并,而 T-S