1

我需要加密我的 MS SQL 数据库中的一些列(名称、ssn ...),并且我一直在研究列加密,如一些站点所述​​,例如: 加密 SQL Server 中的列级数据SQL Server 加密简介和对称密钥加密教程

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

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

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

我在正确的轨道上吗?

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

4

2 回答 2

1

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

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

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

于 2013-01-30T16:28:39.777 回答
0

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

于 2014-01-22T17:59:44.817 回答