仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1004|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之SQL Server 2005加密系统(二)

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继server|加密|系统SQLServer2005加密系统(二)
紧接上一篇,再给一段用密钥加密数据的典范,这段代码对照复杂,年夜黄禁绝像践踏年夜余一样说我注水!!!

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

--创立实行用数据库
USEmaster
IFEXISTS(SELECT[name]FROMsys.databasesWHERE[name]=Sales)
DROPDATABASESales
CREATEDATABASESales
IFEXISTS(SELECTprincipal_idFROMsys.server_principalsWHERE[name]=ryanAND[type]=S)
DROPLOGINryan
CREATElOGINryanWITHPASSWORD=P@ssw0rd
IFEXISTS(SELECTprincipal_idFROMsys.server_principalsWHERE[name]=teddyAND[type]=S)
DROPLOGINteddy
CREATElOGINteddyWITHPASSWORD=P@ssw0rd
GO
--创立用户ryan,并创立数据库主密钥
USESales
IFEXISTS(SELECT*FROMsys.database_principalsWHERE[name]=ryanAND[type]=S)
DROPUserryan
CREATEUSERryanFORLOGINryanWITHDEFAULT_SCHEMA=dbo
GO
IFEXISTS(SELECT*FROMsys.database_principalsWHERE[name]=teddyAND[type]=S)
DROPUserteddy
CREATEUSERteddyFORLOGINteddyWITHDEFAULT_SCHEMA=dbo
GO
CREATEMASTERKEYENCRYPTIONBYPASSWORD=P@ssw0rd
GO
--利用服务主密钥加密数据库主密钥,
--在此删除,由于发明数据库主密钥创立时默许及使用服务主密钥加密
--使用服务主密钥加密的数据库主密钥称为主动密钥办理
--能够使用以下查询语句是不是启用数据库主密钥的主动密钥办理
SELECT[name],is_master_key_encrypted_by_serverFROMsys.databasesWHERE[name]=Sales
--以下语句用于启用数据库主密钥的主动办理
--ALTERMASTERKEYADDENCRYPTIONBYSERVICEMASTERKEY
GO
--为ryan创立证书
IFEXISTS(SELECT[name]FROMsys.certificatesWHERE[name]=CERT_RYAN)
DROPCERTIFICATECERT_RYAN
CREATECERTIFICATECERT_RYANAUTHORIZATIONryan
--ENCRYPTIONBYPASSWORD=P@ssw0rd
--倡议不要利用暗码,由于经由测试,是用暗码的证书是使用暗码回护,
--而非数据库主密钥,可用以下语句测试证书的加密办法
--SELECT[name],pvt_key_encryption_type_descFROMsys.certificates
--WHERE[name]=CERT_DB
WITHSUBJECT=CertificateForDatabase,
START_DATE=01/01/2006,
EXPIRY_DATE=12/31/2015
GO
--为teddy创立证书
IFEXISTS(SELECT[name]FROMsys.certificatesWHERE[name]=CERT_TEDDY)
DROPCERTIFICATECERT_TEDDY
CREATECERTIFICATECERT_TEDDYAUTHORIZATIONteddy
--ENCRYPTIONBYPASSWORD=P@ssw0rd
--倡议不要利用暗码,由于经由测试,是用暗码的证书是使用暗码回护,
--而非数据库主密钥,可用以下语句测试证书的加密办法
--SELECT[name],pvt_key_encryption_type_descFROMsys.certificates
--WHERE[name]=CERT_DB
WITHSUBJECT=CertificateForDatabase,
START_DATE=01/01/2006,
EXPIRY_DATE=12/31/2015
GO
SELECT*FROMsys.certificates
--为ryan和teddy分离创立使用证书回护的对称暗码
CREATESYMMETRICKEYKey_SYM_RYANAUTHORIZATIONryan
WITHALGORITHM=TRIPLE_DES
ENCRYPTIONBYCERTIFICATECERT_RYAN
GO
CREATESYMMETRICKEYKey_SYM_TEDDYAUTHORIZATIONteddy
WITHALGORITHM=TRIPLE_DES
ENCRYPTIONBYCERTIFICATECERT_TEDDY
GO
--创立测试用表
IFEXISTS(SELECT[name]FROMsys.tablesWHERE[name]=encryption)
DROPTABLEencryption
CREATETABLEdbo.encryption
(
PTnchar(10),--PlainText
ETvarbinary(128),--EncryptedText
)
GO
GRANTSELECT,INSERTONencryptionTOryan
GRANTSELECT,INSERTONencryptionTOteddy
--完成筹办事情,入手下手测试加密
EXECUTEASLOGIN=ryan
OPENSYMMETRICKEYKey_SYM_RYANDECRYPTIONBYCERTIFICATECERT_RYAN
INSERTINTOencryption
VALUES(NRYAN,EncryptByKey(Key_GUID(Key_SYM_RYAN),NRYAN))
CLOSEALLSYMMETRICKEYS
REVERT
EXECUTEASLOGIN=teddy
OPENSYMMETRICKEYKey_SYM_TEDDYDECRYPTIONBYCERTIFICATECERT_TEDDY
INSERTINTOencryption
VALUES(NTEDDY,EncryptByKey(Key_GUID(Key_SYM_TEDDY),NTEDDY))
CLOSEALLSYMMETRICKEYS
REVERT
--测试数据已被加密
SELECT*FROMencryption
--解密数据
EXECUTEASLOGIN=ryan
OPENSYMMETRICKEYKey_SYM_RYANDECRYPTIONBYCERTIFICATECERT_RYAN
SELECTPT,CONVERT(nchar,DecryptByKey(ET))ASETFROMencryption
CLOSEALLSYMMETRICKEYS
REVERT
EXECUTEASLOGIN=teddy
OPENSYMMETRICKEYKey_SYM_TEDDYDECRYPTIONBYCERTIFICATECERT_TEDDY
SELECTPT,CONVERT(nchar,DecryptByKey(ET))ASETFROMencryption
CLOSEALLSYMMETRICKEYS
REVERT


但我们知道,若使用statement,并没有上述需要的数据。试想binlog中记录了一句updatetsetf1=3whereid=3。怎么恢复呢?
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-19 09:35:58 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
山那边是海 该用户已被删除
板凳
发表于 2015-1-26 14:50:29 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
精灵巫婆 该用户已被删除
地板
发表于 2015-2-4 19:12:35 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
若相依 该用户已被删除
5#
发表于 2015-2-10 05:25:14 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
柔情似水 该用户已被删除
6#
发表于 2015-2-28 21:43:01 | 只看该作者
比如日志传送、比如集群。。。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-10 08:33:15 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-17 06:10:14 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
不帅 该用户已被删除
9#
发表于 2015-3-23 23:02:43 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 17:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表