情況:假設我有它在數據庫中使用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