仓酷云

标题: MSSQL网站制作之SQL Server 2005加密系统(二) [打印本页]

作者: 蒙在股里    时间: 2015-1-16 22:22
标题: MSSQL网站制作之SQL Server 2005加密系统(二)
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
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
作者: 山那边是海    时间: 2015-1-26 14:50
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
作者: 精灵巫婆    时间: 2015-2-4 19:12
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
作者: 若相依    时间: 2015-2-10 05:25
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
作者: 柔情似水    时间: 2015-2-28 21:43
比如日志传送、比如集群。。。
作者: 灵魂腐蚀    时间: 2015-3-10 08:33
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
作者: 金色的骷髅    时间: 2015-3-17 06:10
原来公司用过MYSQL自己也只是建个表写个SQL
作者: 不帅    时间: 2015-3-23 23:02
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2