在MySQL中我可以做到
SELECT * FROM table WHERE MD5(column) = 'blablabla';
但是我如何使用 NHibernate 和 Criteria 函数来做到这一点?
我已经得到一个 md5 值,但数据库中的列不是 md5 哈希...
我在 C# 中工作。
一些想法?
最佳答案
在 Java 中,您可以使用 Expression.Sql,在 C# 中也应该可以使用,例如:
var table = session.CreateCriteria(typeof(Table))
.Add(Expression.Sql("MD5(column)= ?", value, NHibernateUtil.String))
.UniqueResult<Table>();
其中 value
是 hex-encoded您的 MD5 哈希值。
尽管如此,请注意 - 如果存储在数据库中的值是用户密码,那么您的设计就有缺陷且不安全。您应该只在数据库中存储经过加盐处理的散列密码。不,你甚至不应该那样做,你应该立即使用 bcrypt , scrypt 或 PBKDF2。
关于c# - 如何为 NHibernate for MySQL MD5 设置标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121792/