我有一个Web服务,它将使用SQL Server数据库来存储必须加密和解密的内容。它将定期查询表并获取要在处理中使用的解密形式的数据。
我已按照this example here设置了一个证书和对称密钥以应用于该列并且它可以正常工作。
我不确定在桌面上执行CRUD操作时使用密钥名称的最佳做法是什么。我正在使用实体框架,它并不天真地支持加密和解密。
所以,我想到的可能性:
这两个选项都有效,但从最佳实践和安全角度来看,这里可能有更好的路线。有哪些更好的选择?
第1项的例子:
CREATE PROCEDURE GetDecryptedCustomers
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- reading the data
OPEN SYMMETRIC KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1;
-- Now list the original ID, the encrypted ID
SELECT Customer_id, CONVERT(varchar, DecryptByKey(Credit_card_number_encrypt)) AS 'Decrypted Credit Card Number'
FROM Customer_data;
-- Close the symmetric key
CLOSE SYMMETRIC KEY SymmetricKey1;
END
GO