2016-07-26 134 views
1

我需要加密/解密数据库中的一些个人信息,例如信用卡号和密码。SQL Server证书和对称密钥

继微软的步骤之后,我成功地对&进行了加密解密。

但经过一些测试,我有问题。

假设有人未经授权访问数据库(黑客),并可以从他自己的计算机在SSMS中看到数据库。 Surly他可以看到我有一些证书和对称密钥设置。

为了显示数据的例子显示了下面的查询

OPEN symmetric KEY symmetrickey1 
decryption BY certificate certificate1 
Now list the original ID, the encrypted ID 
SELECT customer_id, 
    credit_card_number_encrypt         AS 
    'Encrypted Credit Card Number', 
    CONVERT(VARCHAR, Decryptbykey(credit_card_number_encrypt)) AS 
    'Decrypted Credit Card Number' 
FROM dbo.customer_data; 
-- Close the symmetric key 
CLOSE symmetric KEY symmetrickey1; 

如果上面的查询返回的数据,并能看到信用卡那么如何才能得到保护?是否有必要在查询中传递密码?

我确定我错过了这里的东西。任何人都可以向我解释这个吗?

+0

抱歉,我说的是SQL Express的 – user2160275

回答

1

我必须包括一个密码cerificate

CREATE CERTIFICATE Certificate1 
Encryption By Password='Password123' 
WITH SUBJECT = 'Protect Data' 

用于检索数据

OPEN Symmetric KEY SymmetricKey1 
DECRYPTION BY CERTIFICATE Certificate1 With Password='Password123' 
; 
select *,CONVERT(nvarchar(255),DECRYPTBYKEY(Credit_Card_No)) as 
[Credit_Card_No3] from Customers 
; 
Close Symmetric Key SymmetricKey1