情况:假设我有它在数据库中使用IUserType加密对实体列:IQuery NHibernate - 我必须加密一个加密的IUserType参数吗?
public class EncryptedStringUserType : IUserType
{
public object NullSafeGet(IDataReader rs, string[] names, object owner)
{
object r = rs[names[0]];
if (r == DBNull.Value)
return null;
return CryptoProvider.Instance.Decrypt((string) r);
}
public void NullSafeSet(IDbCommand cmd, object value, int index)
{
object paramVal = DBNull.Value;
if (value != null)
paramVal = CryptoProvider.Instance.Encrypt((string) value);
IDataParameter parameter = (IDataParameter)cmd.Parameters[index];
parameter.Value = paramVal;
}
// Other IUserType members as usual..
}
正如上文由Ayende自己: http://ayende.com/Blog/archive/2008/07/31/Entities-dependencies-best-practices.aspx
现在查询时,使用的NHibernate IQUERY接口,我需要我传递到查询参数进行加密:
query.SetString("DbEncryptedParameter",
CryptoProvider.Instance.Encrypt(UnencryptedValueObject.ToString()));
问题:有没有更好的方法来执行这个查询,利用NHibernate对这种加密类型的知识,所以在设置参数时不需要执行加密?
不能解决这个问题,但是这是一个更新的加密的usertype:http://gustavoringel.blogspot.com/2009/02/encrypting-password-or-other-strings-in.html – 2010-05-05 23:31:34
谢谢,我已经看到一。它跟上面的差不多。不想添加其他依赖项,所以坚持我自己的解决方案。 – Rick 2010-05-06 08:24:20