我们希望通过NHibernate使用数据库端加密来加密字段(我们遇到的大多数示例都是应用程序端,这不是我们想要的)。问题已经提出了几次,但似乎还没有答案。
例如,在SQL Server 2005上,忘记了与密钥相关的问题,这意味着INSERTing EncryptByKey(Key_GUID(MyKey),MyValueToEncrypt)和SELECTing DecryptByKey(MyEncryptedField)。该属性可能是一个字符串,而该字段必须是varbinary。
我们模糊地得到了某个地方 - 使用upper()和lower()而不是加密函数 - 通过组合成对属性,一个用自定义用户类型映射,另一个用公式属性映射。
然而,如果有人对如何以更好的方式做到这一点有任何想法,我们将非常感谢几点:o)
答案 0 :(得分:1)
答案 1 :(得分:0)
SourceForge上有一个项目MindLib,它有很多有用的NHibernate实用程序函数和库。其中一个是EncryptedString库,它允许您存储加密的字符串。不幸的是,这并不像你最初要求的那样在服务器端进行。
我一直在寻找类似的东西。我唯一能想到的是在SQL Server中创建一个用户函数来加密字符串。类似于this。
答案 2 :(得分:0)
感谢您的反馈!我们将MindLib方法作为最后的手段,因为它有效地将数据所有权从数据库替换为应用程序。据我们所知,支持TDE的数据库(比如说SQL Server 2008或Oracle 10.2)会让问题消失,但并非所有客户都愿意放弃升级; o)