我在SQL Server中有一个nvarchar
列,用于存储在MD5中散列的密码。我想查询此列以进行测试。我使用SQL Server Management Studio来执行类似的查询。
select * from users where Password = HASHBYTES('MD5','password');
我记得在MYSQL中使用过这样的查询,但我不知道如何在SQL Server中使用它。
请注意:我不是要求从MD5转换为plain。我只想测试我的应用程序是否正确地密码密码。
编辑:
我使用以下代码生成MD5哈希
using System.Web.Security;
....
FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5");
答案 0 :(得分:0)
SQL Server中的函数相同,但返回值为varbinary,而不是varchar:http://msdn.microsoft.com/en-us/library/ms174415.aspx
编辑:根据您的问题编辑,我建议您更改对象和数据库以存储字节数组,而不是字符串。这样可以保持清洁,并且您可以使用HashBytes函数查询数据库。为此,您可以使用EF字段类型“二进制”。要生成该值,请使用MD5类的ComputeHash方法 - 这是您当前方法正在执行的操作。