SQL 服务器证书和对称密钥
SQL Server certificate and symmetric key
我需要 encrypt/decrypt 我的数据库中的一些个人信息,例如信用卡号和密码。
按照 Microsoft 的步骤,我成功地加密和解密了数据。
但经过一些测试后我有疑问。
假设有人未经授权访问数据库(黑客攻击),并且可以从他自己的计算机上查看 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;
如果上面查询到returns的数据,可以看到信用卡怎么保护呢?难道不需要在查询中的某处传递密码吗?
我确定我在这里错过了什么。谁能给我解释一下?
我必须在证书中包含一个密码
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
我需要 encrypt/decrypt 我的数据库中的一些个人信息,例如信用卡号和密码。
按照 Microsoft 的步骤,我成功地加密和解密了数据。
但经过一些测试后我有疑问。
假设有人未经授权访问数据库(黑客攻击),并且可以从他自己的计算机上查看 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;
如果上面查询到returns的数据,可以看到信用卡怎么保护呢?难道不需要在查询中的某处传递密码吗?
我确定我在这里错过了什么。谁能给我解释一下?
我必须在证书中包含一个密码
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