Ms sql server 数据库加密
时间:2010-09-29 来源:口渴的火麒麟
Ms sql server数据库的加密方式有如下四种:
1. 使用对称密钥加密数据(ENCRYPTBYKEY):密钥保存在数据服务器上,只能传递密钥标示给存储过程。
例子:
USE AdventureWorks2008R2;
GO
-- Create a column in which to store the encrypted data.
ALTER TABLE HumanResources.Employee
ADD EncryptedNationalIDNumber varbinary(128);
GO
-- Open the symmetric key with which to encrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
DECRYPTION BY CERTIFICATE HumanResources037;
-- Encrypt the value in column NationalIDNumber with symmetric key
-- SSN_Key_01. Save the result in column EncryptedNationalIDNumber.
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber
= EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO
2. 使用证书的公钥加密数据(ENCRYPTBYCERT):只能传递证书标示给存储过程,证书保存在数据库服务器上。
3. 使用非对称密钥加密数据(ENCRYPTBYASYMKEY):密钥保存在数据服务器上,只能传递密钥标示给存储过程;
4. 用通行短语加密数据(ENCRYPTBYPASSPHRASE ):密钥可以采用参数传递给存储过程。
例子:
DECLARE @PassphraseEnteredByUser nvarchar(128);
SET @PassphraseEnteredByUser
= 'xxx!'; -- 密钥
-- 加密字段col_a然后保存到col_c
UPDATE dbo.Table_1
SET Col_C = EncryptByPassPhrase(@PassphraseEnteredByUser
, Col_A);
-- 解密col_c
select CONVERT(nvarchar,
DecryptByPassphrase(@PassphraseEnteredByUser, Col_C)) as ttt
from dbo.Table_1
所有以上加密方式,加密后的返回类型:最大大小为 8,000 个字节的 varbinary。