SQLServer2008中的非对称密钥加密有什么用
本篇内容主要讲解"SQLServer2008中的非对称密钥加密有什么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SQLServer2008中的非对称密钥加密有什么用"吧!
SQLServer2008中非对称密钥加密有什么用
我们看一组例子:
示例一、创建非对称密钥
创建非对称密钥使用如下命令:
CREATEASYMMETRICKEY创建非对称密钥。(http://msdn.microsoft.com/en-us/library/ms174430.aspx)
viewplaincopytoclipboardprint
示例二、查看当前数据库中的非对称密钥
使用目录视图sys.asymmetric_keys(http://msdn.microsoft.com/en-us/library/ms188399.aspx)来查看。
viewplaincopytoclipboardprint
示例三、修改非对称密钥的私钥密码
你可以使用带有ENCRYPTIONBYPASSWORD和DECRYPTIONBYPASSWORD选项的ALTERASYMMETRICKEY(http://technet.microsoft.com/en-us/library/ms189440.aspx)修改私钥的密码。
viewplaincopytoclipboardprint
--修改私钥密码
ALTERASYMMETRICKEYasymDemoKey--要修改的密钥名称
WITHPRIVATEKEY--私钥
(ENCRYPTIONBYPASSWORD='newpasswordE4D352F280E0',--指定新密码
DECRYPTIONBYPASSWORD='TestASYM123!')--旧密码是用来解密的
--修改私钥密码
ALTERASYMMETRICKEYasymDemoKey--要修改的密钥名称
WITHPRIVATEKEY--私钥
(ENCRYPTIONBYPASSWORD='newpasswordE4D352F280E0',--指定新密码
DECRYPTIONBYPASSWORD='TestASYM123!')--旧密码是用来解密的
示例四、使用非对称密钥对数据进行加密和解密。
由于同时需要公钥和密钥,在维护保密数据时使用非对称密钥来加密数据是非常安全的方式。但同时用于大数据集时将消耗更多的资源。
不推荐使用非对称密钥对数据加密,但它仍然是一个选择。一旦将非对称密钥加到数据库,就可以用来加密和解密数据。
用到以下两个sql函数:
EncryptByAsymKey加密数据。(http://technet.microsoft.com/en-us/library/ms186950.aspx)
DecryptByAsymKey解密数据。(http://msdn.microsoft.com/en-us/library/ms189507.aspx)
注意,在通过证书加密时,DecryptByAsymKey返回的是varbinary类型的加密数据。
下面是一个例子:
viewplaincopytoclipboardprint
useDB_Encrypt_Demo
go
--创建需要加密的数据
CreateTableBankUser
(PKIDintprimarykeyidentity(10001,1)
,UserNovarbinary(1000)null
,CurStatesmallintdefault(0)notnull
)
go
insertintoBankUser
(UserNo,CurState)
VALUES(EncryptByAsymKey(AsymKey_ID('asymDemoKey'),'137492837583249ABR'),1)
--插入一条记录,字段UserNo存储了加密的号码值
go
selectPKID,Curstate,cast(UserNoasnvarchar(1000))asUserNo
fromBankUser
wherePKID=10001
useDB_Encrypt_Demo
go
--创建需要加密的数据
CreateTableBankUser
(PKIDintprimarykeyidentity(10001,1)
,UserNovarbinary(1000)null
,CurStatesmallintdefault(0)notnull
)
go
insertintoBankUser
(UserNo,CurState)
VALUES(EncryptByAsymKey(AsymKey_ID('asymDemoKey'),'137492837583249ABR'),1)
--插入一条记录,字段UserNo存储了加密的号码值
go
selectPKID,Curstate,cast(UserNoasnvarchar(1000))asUserNo
fromBankUser
wherePKID=10001
SQLServer2008中非对称密钥加密有什么用
明文结果:
查看未加密的数据:
viewplaincopytoclipboardprint
SELECTPKID,Curstate,
cast
(DecryptByAsymKey(AsymKey_ID('asymDemoKey'),UserNo,N'newpasswordE4D352F280E0')
asvarchar(1000))asUserNo--需要原始私钥
fromBankUserwherePKID=10001
SELECTPKID,Curstate,
cast
(DecryptByAsymKey(AsymKey_ID('asymDemoKey'),UserNo,N'newpasswordE4D352F280E0')
asvarchar(1000))asUserNo--需要原始私钥
fromBankUserwherePKID=10001
示例五、删除非对称密钥
命令:DROPASYMMETRICKEY删除指定的非对称密钥(http://msdn.microsoft.com/en-us/library/ms188389.aspx)
例子:
viewplaincopytoclipboardprint
DROPASYMMETRICKEYasymDemoKey
DROPASYMMETRICKEYasymDemoKey
到此,相信大家对"SQLServer2008中的非对称密钥加密有什么用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!