我需要加密MS SQL数据库中的某些列(名称,ssn ...),我一直在查看列加密,如下所示: Encrypting Column Level Data in SQL Server 和 Introduction 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语句中,这样存储过程就可以解密数据然后执行查询。
我是在正确的轨道上吗?
我是新手,所以我欢迎其他有用的建议。
答案 0 :(得分:1)
是的,我已经看过解密加密文本的存储过程。我也看过加密文本的存储过程,我更喜欢触发器,因为我不喜欢触发器 - 请参阅these answers。
但是,我更喜欢将加密逻辑放在我的应用程序层中 - 例如使用Enterprise Library Encryption Code。使用Enterprise Library控制台可以在配置文件中轻松加密密码和盐。
在数据库中执行此项工作是否有特定原因?如果你必须这样做,你可以使用EL来保护你的密码并将其传递给你写的存储过程。
答案 1 :(得分:0)
如果您使用的是MS SQL Server Enterprise或Developer Edition,则可以使用TDE: TDE