我需要加密/解密我的数据库中的某些个人信息,例如信用卡号和密码。
按照Microsoft的步骤,我成功加密了&解密数据。
但经过一些测试我有疑问。
假设有人未经授权访问数据库(hack),并且可以从他自己的计算机中查看SSMS中的数据库。他可以看到我有一些证书和对称密钥设置。
为了显示数据,示例显示以下查询
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 :(得分:1)
我必须在证书中加入密码
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