使用LINQ在MS SQL中查询加密列

时间:2013-01-30 15:57:21

标签: c# sql sql-server linq encryption

我需要加密MS SQL数据库中的某些列(名称,ssn ...),我一直在查看列加密,如下所示: Encrypting Column Level Data in SQL ServerIntroduction to SQL Server Encryption and Symmetric Key Encryption Tutorial

我已经能够使用插入触发器来加密列,我可以使用以下方法解密SQL Studio中的列:

OPEN SYMMETRIC KEY TestTableKey
DECRYPTION BY PASSWORD = 'Pa$$w0rd'
CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondCol
FROM TestTable

但是如何从我的应用程序访问数据?我仍然希望能够搜索姓名。我唯一能想到的是使用存储过程并将解密密码作为参数发送到LINQ语句中,这样存储过程就可以解密数据然后执行查询。

我是在正确的轨道上吗?

我是新手,所以我欢迎其他有用的建议。

2 个答案:

答案 0 :(得分:1)

是的,我已经看过解密加密文本的存储过程。我也看过加密文本的存储过程,我更喜欢触发器,因为我不喜欢触发器 - 请参阅these answers

但是,我更喜欢将加密逻辑放在我的应用程序层中 - 例如使用Enterprise Library Encryption Code。使用Enterprise Library控制台可以在配置文件中轻松加密密码和盐。

在数据库中执行此项工作是否有特定原因?如果你必须这样做,你可以使用EL来保护你的密码并将其传递给你写的存储过程。

答案 1 :(得分:0)

如果您使用的是MS SQL Server Enterprise或Developer Edition,则可以使用TDE: TDE