Ms sql server 数据库加密

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。

你可能感兴趣的:(SQL Server)