如何解决使用 Bcrypt C# 验证密码无法正常工作
我在使用 Bcrypt 包时遇到了一个真正的问题,我有一段 C# 代码可以对密码进行哈希处理并将其保存到数据库中,然后对密码进行哈希处理并使用用户输入的密码进行验证,如果在登录窗口中。
在简单的情况下(不存储在数据库中)工作正常,但是当密码保存在数据库中时,就会出现问题。
var PasswordEncrypted = BCrypt.Net.BCrypt.HashPassword(Password.Password);
userMdl.password = PasswordEncrypted;
bool testAdd = AddUser(userMdl);
if (test)
{
//....
}
else
{
//......
}
// And then save it to the database
// Trying to get the password encrypted from the database
if(BCrypt.Net.BCrypt.Verify(passw.Password.ToString(),userMdl.password)
{
Console.writeLine("Password correct");
}
public bool AddUser(usermodel model)
{
string sqlconnection = GetConnection();
using (IDbConnection connection = sqlconnection)
{
var p = new Dapper.DynamicParameters();
p.Add("UserId",model.UserID);
p.Add( "password",model.password);
try
{
connection.Query<usermodel>("dbo.User_insert",p,null,true,CommandType.StoredProcedure).ToList();
return true;
}
catch (Exception ex)
{
GlobalConfig.log.Error("Problem when Add User " + ex.Message);
return false;
}
}
}
注意:
我做错了什么??
解决方法
感谢@500-InternalServerError的帮助,终于解决了,错误在存储过程,保存前后hash不一样,所以只保存了一些字符,
当我将密码列类型的 nvarchar(55)
更改为 nvarchar(MAX)
并且在插入 SQL 过程中的@password 参数中,它起作用了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。