仓酷云

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

[学习教程] MSSQL编程:SQL Server 2005数据加密手艺使用研讨

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统数据加密是SQLServer2005新增的数据平安特征,这对使用程序开辟者来讲长短常主要的改善。本文从程序开辟者角度,切磋SQLServer2005数据加密特征和怎样使用该特征包管体系的数据平安。
SQLServer2005是微软入手下手实行其“可托赖盘算”企图以来的第一个次要的产物,它供应了丰厚的平安特征,为企业数据供应平安保证。对开辟职员来讲,最存眷的是怎样在程序计划过程当中使用这些特征来回护数据库中的数据平安。本文将从使用程序开辟者角度切磋基于SQLServer2005数据加密特征的使用。
SQLServer2005数据加密手艺
数据用数字体例存储在服务器中并不是十拿九稳。理论证实有太多的办法能够智取SQLServer2000认证回护,最复杂的是经由过程利用没有口令的sa账号。只管SQLServer2005远比它之前的版本平安,但打击者仍是有大概取得存储的数据。因而,数据加密成为更完全的数据回护计谋,即便打击者得以存取数据,还不能不解密,因此对数据增添了一层回护。
SQLServer2000之前的版本没有内置数据加密功效,若要在SQLServer2000中举行数据加密,不能不买第三产业品,然后在服务器内部作COM挪用大概是在数据送服务器之前在客户真个使用中实行加密。这意味着加密的密钥或证书不能不由加密者本人卖力回护,而回护密钥是数据加密中最难的事,以是即便良多使用中数据已被很强的加密过,数据回护仍旧很弱。
SQLServer2005经由过程将数据加密作为数据库的内涵特征办理了这个成绩。它除供应多条理的密钥和丰厚的加密算法外,最年夜的优点是用户能够选择数据服务器办理密钥。SQLServer2005服务器撑持的加密算法以下:
⑴对称式加密(SymmetricKeyEncryption):
对称式加密体例对加密息争密利用不异的密钥。一般,这类加密体例在使用中难以实行,由于用统一种平安体例共享密钥很难。但当数据贮存在SQLServer中时,这类体例很幻想,你可让服务器办理它。SQLServer2005供应RC4、RC2、DES和AES系列加密算法。
⑵非对称密钥加密(AsymmetricKeyEncryption):
非对称密钥加密利用一组大众/公家密钥体系,加密时利用一种密钥,解密时利用另外一种密钥。大众密钥能够普遍的共享和泄漏。当必要用加密体例向服务器内部传送数据时,这类加密体例更便利。SQLServer2005撑持RSA加密算法和512位、1,024位和2,048位的密钥强度。
⑶数字证书(Certificate):
数字证书是一种非对称密钥加密,可是,一个构造可使用证书并经由过程数字署名将一组公钥和私钥与其具有者相干联。SQLServer2005撑持“因特网工程事情组”(IETF)X.509版本3(X.509v3)标准。一个构造能够对SQLServer2005利用内部天生的证书,大概可使用SQLServer2005天生证书。
SQLServer2005接纳多级密钥来回护它外部的密钥和数据,以下图所示:

SQLServer2005接纳多级密钥回护它外部的密钥和数据

图中引出箭头的密钥或服务用于回护箭头所指的密钥。以是服务主密钥(servicemasterkey)回护数据库主密钥(databasemasterkeys),而数据库主密钥又回护证书(certificates)和非对称密钥(asymmetrickeys)。而最底层的对称性密钥(symmetrickeys)被证书、非对称密钥或其他的对称性密钥回护(箭头又指回它自己)。用户只需经由过程供应暗码来回护这一系列的密钥。
图中顶层的服务主密钥,安装SQLServer2005新实例时主动发生和安装,用户不克不及删除此密钥,但数据库办理员能对它举行基础的保护,如备份该密钥到一个加密文件,当其危及到平安时更新它,恢复它。
服务主密钥由DPAPI(DataProtectionAPI)办理。DPAPI在Windows2000中引进,创建于Windows的Crypt32API之上。SQLServer2005办理与DPAPI的接口。服务主密钥自己是对称式加密,用来加密服务器中的数据库主密钥。
数据库主密钥与服务主密钥分歧,在加密数据库中数据之前,必需由数据库办理员创立数据库主密钥。一般办理员在发生该密钥时,供应一个口令,以是它用口令和服务主密钥来加密。假如有充足的权限,用户能够在必要时显式地或主动地翻开该密钥。上面是发生数据库主密钥的T-SQL代码示例:
以下为援用的内容:
USEEncryptionDB
CREATEMASTERKEY
ENCRYPTIONBYPASSWORD=UTY6%djzZ8S7RyL
每一个数据库只要一个数据库主密钥。能够用ALTERMASTRKEY语句来删除加密,变动口令或删除数据库主密钥。一般这由数据库办理员来卖力做这些。
有了数据库主密钥,就能够动手加密数据。T-SQL有置于其内的加密撑持。利用CREATE语句创立各类暗码,ALTER语句修正他们。比方要创立对称式加密,能够经由过程一对函数EncryptByKey和DecryptByKey来完成。
数据加密手艺使用剖析
上面经由过程实例来切磋SQLServer2005数据加密与解密手艺的完成。
假定有一张Customer表,表中有字段customerID、name、city和各类信誉卡细节。个中信誉卡细节必要加密而其他数据不必要。假定User1有对称式密钥,并用该密钥登录,运转响应的代码加密数据。
⑴数据加密
①发生密钥:在含有Customers表的数据库中利用TripleDES作为加密算法,天生对称式密钥。本例中,密钥自己由已存在在数据库中的证书回护,如图一所示,对称暗码受非对称暗码和存在的其他对称式密钥回护。
以下为援用的内容:
CREATESYMMETRICKEYUser1SymmetricKeyCert
AUTHORIZATIONUser1
WITHALGORITHM=TRIPLE_DES
ENCRYPTIONBYCERTIFICATEUser1Certificate
②翻开密钥:对称式密钥利用前必需显式翻开,以是接上去翻开它,从头找回暗码,解密它,并放它在受回护的服务器内存中,筹办利用。
以下为援用的内容:
OPENSYMMETRICKEYUser1SymmetricKeyCert
DECRYPTIONBYCERTIFICATEUser1Certificate
③加密数据:鄙人面的代码中,利用一般的T-SQLINSERT语句将一行数据拔出表中,id、name和city用明文保留,信誉卡范例、号码和有潜伏秘密的客户正文用加密体例贮存,用TripleDES加密算法加密数据。
以下为援用的内容:
INSERTINTOCustomer
VALUES(4,JohnDoe,Fairbanks,
EncryptByKey(Key_GUID(
User1SymmetricKeyCert),Amex),
EncryptByKey(Key_GUID(
User1SymmetricKeyCert),
1234-5678-9009-8765),
EncryptByKey(Key_GUID(
User1SymmetricKeyCert),
Windowshopper.Spends$5atmost.))
加密完成后,封闭它,开释内存,以防它被误用。
CLOSESYMMETRICKEYUser1SymmetricKeyCert
以上是全部的数据加密的操纵历程。它没有凌乱的暗码办理,也不必挪用出格的算法。贮存加密数据的字段是varbinary范例数据,其长度足以贮存扩大的数据(加密数据比明文必要更多的空间,偶然候多良多)。
⑵数据解密
要解密已加密的数据,你必要从头翻开对称式加密。利用DecryptByKey函数读数据,然后封闭对称式加密。了局及响应的代码以下。
以下为援用的内容:
OPENSYMMETRICKEYUser1SymmetricKeyCert
DECRYPTIONBYCERTIFICATEUser1Certificate
SELECTCustID,Name,City,
CONVERT(VARCHAR,DecryptByKey(CreditCardType))
ASCardType,
CONVERT(VARCHAR,DecryptByKey(CreditCardNumber))
ASCardNumber,
CONVERT(VARCHAR,DecryptByKey(Notes))
ASNotes
FROMCustomerWHERECustID=4
CLOSESYMMETRICKEYUser1SymmetricKeyCert
这个例子显现了让SQLServer2005为你办理密钥的一种办法。但实践上,用户老是选择本人供应一个口令的体例,用RC4算法发生对称暗码。代码以下:
以下为援用的内容:
CREATESYMMETRICKEYUser2SymmetricKeyPwd
AUTHORIZATIONUser2
WITHALGORITHM=RC4
ENCRYPTIONBYPASSWORD=sdylvxF&imeG3FP
SQLServer2005发生一个基于用户供应的口令的密钥来加密数据。除非明白指定,不然口令不保留在SQLServer2005中,用户必需回护好本人的口令,不然任何一个晓得口令的人都能够解密数据。
假如以为对存储在数据库中的数据加密完整是华侈处置器工夫和存储空间那就错了。SQLServer2005中的数据加密是一个不凡的特征,它为客户的数据供应了一个主要的回护层。但使用时要注重,只对那些敏感秘密的数据举行回护,由于加密损耗服务器处置器大批的资本,假如对一个有一万万笔记录的表的每一个字段都加密的话,运转一条没有Where子句的SELECT便可能招致服务器功能的溃散。

mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。
admin 该用户已被删除
沙发
发表于 2015-1-19 06:53:57 | 只看该作者
发几份SQL课件,以飨阅者
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-24 15:40:23 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
第二个灵魂 该用户已被删除
地板
 楼主| 发表于 2015-2-1 23:24:22 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
5#
发表于 2015-2-7 16:35:20 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
透明 该用户已被删除
6#
发表于 2015-3-7 01:37:47 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
小妖女 该用户已被删除
7#
发表于 2015-3-14 06:25:44 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
若天明 该用户已被删除
8#
发表于 2015-3-21 01:02:27 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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