SQL SERVER2005加密解密技术
原创
©著作权归作者所有:来自51CTO博客作者atd_nian的原创作品,请联系作者获取转载授权,否则将追究法律责任
小弟不才,最近完成了一个SQL 2005数据库加密解密项目。把完成项目的问题记录下来,以便日后参考。
先来简单说明SQL SERVER2005数据库加密解决的方法:
数据加密是SQL Server 2005新增的数据安全特性,这对应用程序开发者来说是非常重要的改进。SQL Server 2005服务器支持的加密算法主要有以下三种:⑴ 对称式加密(Symmetric Key Encryption);⑵ 非对称密钥加密(Asymmetric Key ryption);⑶ 数字证书(Certificate);
下面具体看一下如何对数据库数据进行加密:
1、产生密钥:在含有ENTP表的数据库中使用Triple DES作为加密算法,生成对称式密钥:
CREATE SYMMETRIC KEY User1SymmetricKeyCert
AUTHORIZATION User1
WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY CERTIFICATE User1Certificate
2、打开密钥:对称式密钥使用前必须显式打开
OPEN SYMMETRIC KEY User1SymmetricKeyCert DECRYPTION BY CERTIFICATE User1Certificate
3、加密数据:采用密钥对数据库进行加密处理
INSERT INTO Entp VALUES (4, '12345678-9', '企业名称', EncryptByKey(Key_GUID( 'User1SymmetricKeyCert'), 'Amex'), EncryptByKey(Key_GUID( 'User1SymmetricKeyCert'), '1234-5678-9009-8765'), EncryptByKey(Key_GUID( 'User1SymmetricKeyCert'), 'Window shopper. Spends at most.'))
4、关闭密钥:
CLOSE SYMMETRIC KEY User1SymmetricKeyCert
5、解密:
OPEN SYMMETRIC KEY User1SymmetricKeyCert
DECRYPTION BY CERTIFICATE User1Certificate
SELECT CustID, Name, City,
CONVERT(VARCHAR, DecryptByKey(CreditCardType)) AS CardType
FROM Entp
CLOSE SYMMETRICKEYUser1SymmetricKeyCert
以上是以密钥对数据库数据进行加密及解决的方法。
SQL 2005还有两种加密方法,其中一种是以数据库证书及对应证书的密钥对数据库进行加密。另一种是SQL SERVER 2005的简单加密方法。在加密过程中除了可按照以上步骤对数据库加密外,还有需要注意的是在加密过程中应注意加密字段的数据类型应为:varbinary(MAX)。
本人因为是在原有数据库中进行数据处理,即把SQL2000的数据库升级为SQL2005的数据库,因此需把原有的数据导入2005数据库中,在导数据的过程中应注意源数据库中表的字段需进行加密后insert into至目的数据库,
注意:
1、在源数据库中的加密字段的字段类型应为:nvarchar()类型,否则加密处理后的数据解密后会成为乱码。
2、如不是从源数据库中导入数据的情况,而是手工insert 数据至目标数据库则需进行源数据的字段类型转换。如下:
Insert into entp values(4,'12345678-9', EncryptByKey(Key_GUID('加密密码', convert(nvarchar(100),'企业名称')))
3、在加密后的数据中必须要验证一下数据是否加密成功,在加密过程中可能会加密失败,使加密过程的数成为NULL值,这种情况是由于在数据录入了非法字符或其他情况产生的。如何解决呢?呵,那就只能换一种加密方法。
具体的数据库加密处理代码可在网上查到,在处理过程中应数据库加密后的数据是不断变化的,因此加密后的数据可能无法对数据进行查询了,麻烦呀,那就只能写存储过程或视图的方式对数据进行加密和解密,同时对存储过程和视图再加密,这样就可以解决加密问题。
“很久没写帖子了,写的简单,只供各位参考”
下一篇:SQL 交叉表存储过程
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
解密数仓的SQL ON ANYWHERE技术
如果能在一个客户端中使用SQL语句操作不同的大数据组件,将极大提升使用各种大数据组件的效率。
HDFS SQL hdfs GaussDB DWS SQL On Anywhere -
sql server2005自带的des加密解密方法
sql server2005自带的des加密解密方法CREATE SYMMETRIC KEY key1 WITH ALGORITHM=DES ENCRYPTION BY PASSWORD='23
sql server 解密 加密 encryption algorithm -
linux CA 加密解密技术
网络传输加解密知识的讲解
linux 加密 技术 基础知识