sql server 加密解密字段的解决方案步骤
1.创建数据库主密钥CREATE MASTER KEY ENCRYPTION BY PASSWORD = '********'
2.为用户创建证书和密钥
CREATE CERTIFICATE erpwebscert
AUTHORIZATION erpwebs WITH SUBJECT = 'Cert for erpwebs'
CREATE CERTIFICATE erpsyscert
AUTHORIZATION erpsys WITH SUBJECT = 'Cert for erpsys'
GO
--symmetric keys to be used for encryption
--they are faster than certificates
CREATE SYMMETRIC KEY Key1 AUTHORIZATION erpwebs
WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE erpwebscert
CREATE SYMMETRIC KEY Key2 AUTHORIZATION erpsys
WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE erpsyscert
GO
3.为表创建触发器,在插入时加密
create trigger [dbo].[EncryptPassword]
on [dbo].[t_excutesql_password]
for insert
as
EXECUTE AS USER='erpsys'
OPEN SYMMETRIC KEY Key2 DECRYPTION BY CERTIFICATE erpsyscert;
update t_excutesql_password set password= EncryptByKey(Key_GUID('Key2'),password)
CLOSE SYMMETRIC KEY Key2
4.创建存储过程在读取时解密
create proc [erpwebs].[SelPass]
@password as nvarchar(50)
as
begin
EXECUTE AS USER='erpsys'OPEN SYMMETRIC KEY Key2
DECRYPTION BY CERTIFICATE erpsyscert
select top 1 cast(decryptByKey(password) AS VARCHAR(256))
from t_excutesql_password
where cast(decryptByKey(password) AS VARCHAR(256))=@password
end
CLOSE SYMMETRIC KEY Key2
posted on 2012-08-13 16:27 xiaojingxaut2008 阅读(556) 评论(0) 收藏 举报
浙公网安备 33010602011771号