|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性在sqlserver中,我们怎样为数据举行加密与解密,制止利用者夺取秘密数据?
关于一些敏感数据,如暗码、卡号,一样平常不克不及利用一般数值来存储。不然会有平安隐患。以往的加密解密都有前端使用程序来帮助完成。而数据库一样平常只能加密不克不及解密。
从2005入手下手供应了数据库层面的数据加密与解密。实在现体例次要有以下:
1、使用CONVERT改动编码体例:
使用该函数把笔墨或数据转换成VARBINARY。但该体例不具有回护数据的才能,仅制止扫瞄数据的过程当中能间接看到敏感数据的感化。
示例:
CREATETABLEt_test
(
userIDINTIDENTITY(1,1),
userNameVARCHAR(10),
userSalaryFLOAT,
cyberalaryNVARCHAR(MAX)
);
INSERTINTOt_test
(userName,userSalary)
selecttaici,1234
unionall
selecthailong,3214
unionall
selectmeiyuan,1111
--ALTERTABLEtest
--ADDuserNewSalaryVARBINARY(512)
--利用转换函数把数据转换成varbinary,改动编码体例。
SELECT*,CONVERT(VARBINARY(512),userSalary)FROMt_test
--把数据转换成int,能够恢回复有编码体例
SELECT*,CONVERT(INT,userSalary)FROMt_test
2、使用对称密钥:
搭配EncryptByKey举行数据加密。利用DecryptByKey函数举行解密。这类体例对照合适年夜数据量。由于对称密钥的历程好用资本较少。
示例:
--创立对称密钥
CREATESYMMETRICKEYSymKey123
WITHALGORITHM=TRIPLE_DESENCRYPTIONBYPASSWORD=P@ssw0rd
GO
--注重事项:在启用时,必要先OPENSYMMETRICKEY搭配密钥暗码,不然所发生的数据城市是null值。并且必要搭配Key_GUID函数来利用
--翻开对称密钥
OPENSYMMETRICKEYSymKey123DECRYPTIONBYPASSWORD=P@ssw0rd;
--举行数据加密
SELECT*,ENCRYPTBYKEY(KEY_GUID(SymKey123),CONVERT(VARCHAR(max),AddressLine1))
FROMPerson.Address
--把加密后数据更新到本来别的的列上
UPDATEPerson.Address
SETAddressLine2=ENCRYPTBYKEY(KEY_GUID(SymKey123),CONVERT(VARCHAR(max),AddressLine1))
--解密:解密历程一样必要OPENSYMMETRICKEY,且必要使用DECRYPTBYKEY和CONVERT函数
OPENSYMMETRICKEYSymKey123DECRYPTIONBYPASSWORD=P@ssw0rd;
SELECTAddressID,CONVERT(VARCHAR(MAX),CONVERT(VARCHAR(MAX),DECRYPTBYKEY(AddressLine2)))
FROMPerson.Address
3、使用非对称密钥:
搭配EncryptByAsymKey举行数据加密。利用DecryptByAsymKey函数举行解密。用于更高平安级其余加解密数据。由于耗用资本叫多。
示例:
--非对称密钥利用两种分歧的密钥,以是加密是是不必要输出暗码考证,但解密时就必要
CREATEASYMMETRICKEYAsymKey123WITHALGORITHM=RSA_2048ENCRYPTIONBYPASSWORD=P@ssw0rd;
GO
--增加新列存储加密后的数据
ALTERTABLEPerson.AddressADDAddressLine3nvarchar(MAX)
GO
--举行加密
SELECT*,ENCRYPTBYASYMKEY(ASYMKEY_ID(AsymKey123),CONVERT(VARCHAR(MAX),AddressLine1))
FROMPerson.Address
GO
--把数据更新到一个新列
UPDATEPerson.Address
SETAddressLine3=ENCRYPTBYASYMKEY(ASYMKEY_ID(AsymKey123),CONVERT(VARCHAR(MAX),AddressLine1))
SELECT*--addressline3
FROMPerson.Address
--解密:此历程必定要利用暗码来解密,此处的范例要与加密时不异,好比加密时用varchar,而这里用nvarchar的话是解密不了的。
SELECTTOP10AddressID,CONVERT(VARCHAR(MAX),CONVERT(VARCHAR(MAX),DECRYPTBYASYMKEY(ASYMKEY_ID(AsymKey123),AddressLine3,NP@ssw0rd)))ASDecryptedata
FROMPerson.Address
4、使用凭据的体例:
搭配EncryptByCert举行加密和DecryptByCert函数举行解密。对照相似非对称密钥。
示例:
CREATECERTIFICATEcertKey123--证书名
ENCRYPTIONBYPASSWORD=P@ssw0rd--暗码
WITHSUBJECT=AddressCertificate,--证书形貌
START_DATE=2012/06/18,--证墨客效日期
EXPIRY_DATE=2013/06/18;--证书到期日
GO
--使用证书加密
SELECT*,ENCRYPTBYCERT(CERT_ID(certKey123),CONVERT(VARCHAR(MAX),AddressLine1))cyberAddress
FROMPerson.Address
--增加新列寄存加密数据
ALTERTABLEPerson.AddressADDAddressLine4Nvarchar(MAX)
--把加密后数据放到新列
UPDATEPerson.Address
SETAddressLine4=ENCRYPTBYCERT(CERT_ID(certKey123),CONVERT(VARCHAR(MAX),AddressLine1))
--解密
SELECTAddressID,CONVERT(VARCHAR(MAX),CONVERT(VARCHAR(MAX),DECRYPTBYCERT(CERT_ID(certKey123),AddressLine4,NP@ssw0rd)))DecryAddressu)FROMPerson.Address
5、使用暗码短语体例:
搭配EncryptBypassPhrase举行加密,利用DecryptByPassPhrase函数来解密。可使用成心义的短语或其他数据行,当做加密、解密的关头字,对照合适一样平常的数据加解密。
示例:
--短语加密:该历程较为复杂,只必要利用EncryptByPassPhrase函数,利用短语加密时,参考的数据航不成以变化,不然解密失利。
SELECT*,AddressLine5=ENCRYPTBYPASSPHRASE(P@ssw0rd,CONVERT(varbinary,AddressLine1),AddressID)
FROMPerson.Address
--增加新列寄存数据,注重,ENCRYPTBYPASSPHRASE函数前往的是VARBINARY范例
ALTERTABLEPerson.AddressADDAddressLine5VARBINARY(256)
--将数据更新,过程当中利用P@ssw0rd和AddressID数据行当做暗码短语
UPDATEPerson.Address
SETAddressLine5=ENCRYPTBYPASSPHRASE(P@ssw0rd,CONVERT(varbinary,AddressLine1),AddressID)
SELECT*FROMPerson.Address
在执行崩溃恢复时,理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是很重要的: |
|