【发布时间】:2013-08-21 16:02:59
【问题描述】:
我的一张表中有一个字段使用
加密ENCRYPTBYPASSPHRASE(<passphrase>,<value>)
当值被放入对象时,该字段仍然是加密的,所以我不能用它做任何事情。我无法创建视图或存储过程或任何其他解密数据库中字段的项目,因为那样它会破坏加密字段的目的。有没有办法让框架运行类似
DECRYPTBYPASSPHRASE(<passphrase>, <columnName>)
在给对象赋值之前?
现在我正在获取数据,然后调用 ExecuteQuery 来解密该值。并将该新值分配给我的数据模型类上的加密值。它有效,但我只是想知道它是否可以通过一些我不知道的选项自动完成。我试过搜索,但没有找到任何东西。
【问题讨论】:
-
您如何自动知道
passPhrase以及转换为清除varbinary的类型,还是要检索byte[]? -
我知道密码短语现在我得到了解密调用 ExecuteQuery 的值,如下所示。
-
我知道 PassPhrase 现在我得到了 Decrypt 调用 ExecuteQuery 的值,如下所示。 “Select CAST(DECRYPTBYPASSPHRASE('{0}', {1}) AS NVARCHAR(MAX)) AS {2} FROM Table Whered PrimaryKey = {3}” 其中 0 = 短语,1 = 列,2 = 返回的列名称, 3 = 我要解密的确切记录的密钥。所以我现在得到了值。只是它需要我多走一步。在将数据从数据库填充到对象后。我必须运行额外的查询来获取解密的值。
标签: c# sql linq encryption