【问题标题】:Query encrypted column in MS SQL using LINQ使用 LINQ 查询 MS SQL 中的加密列
【发布时间】:2014-01-23 01:59:44
【问题描述】:

我需要加密我的 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 语句中,这样存储过程就可以解密数据然后执行查询。

我走对了吗?

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

【问题讨论】:

    标签: c# sql sql-server linq encryption


    【解决方案1】:

    是的,我见过用于解密加密文本的存储过程。我还看到了加密文本的存储过程,我更喜欢触发器,因为我不喜欢触发器 - 请参阅 these answers

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

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

    【讨论】:

    • 感谢您的回复。我无法在应用层加密,因为我使用批量插入从另一个数据库插入数据。所以我想我现在先试试存储过程。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-11
      • 1970-01-01
      • 2019-06-28
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      相关资源
      最近更新 更多