c# - 如何为 NHibernate for MySQL MD5 设置标准?

标签 c# mysql nhibernate md5

在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>();

其中 valuehex-encoded您的 MD5 哈希值。

尽管如此,请注意 - 如果存储在数据库中的值是用户密码,那么您的设计就有缺陷且不安全。您应该只在数据库中存储经过加盐处理的散列密码。不,你甚至不应该那样做,你应该立即使用 bcrypt , scrypt 或 PBKDF2。

关于c# - 如何为 NHibernate for MySQL MD5 设置标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121792/

相关文章:

c# - 使用c#获取git命令行返回值

mysql - 将 MySQL 字段附加到另一个带有一些文本的字段的末尾

.net - NHibernate 中只读列表的最佳实践是什么

mysql - 如何在流利的 NHibernate 中设置编码?

c# - 如何用最小的 C# 代码将一个 Stream 复制到一个字节数组?

c# - 创建一个没有属性和第一个元素的 XmlDocument

php - 我应该将访问控制列表序列化为 json 还是数据库表

NHibernate.Caches.EnyimMemcached,protobuf-net.Enyim 想要 Enyim.Caching 的冲突版本

c# - 为什么语句是 (j++);禁止?

mysql - 如何在M2中通过sql查询所有库存产品的类别ID?