0
我正在使用.Net实现的BCrypt在数据库中存储密码。密码列是VARCHAR(MAX)在数据库中截断的BCrypt哈希密码
这是通过存储过程更新密码的代码:
Update [User]
Set [Password]= @NewPassword,
ModifiedOn = GetDate(),
ModifiedBy = 'PasswordChanger'
Where [UserName] = @UserName
对于一些用户来说,密码被截断。截断后的一个例子是:$ 2a $ 12 $ XM2
这并非总是如此。
请帮我理解什么可能导致截断?
UPDATE:
下面是C#代码调用SP更新密码:
string HashedPassword;
int NumberOfRowsAffected;
try
{
Database jss = DatabaseFactory.CreateDatabase();
HashedPassword = BCrypt.HashPassword(txtPassword.Text, BCrypt.GenerateSalt(12));
NumberOfRowsAffected = jss.ExecuteNonQuery("procUpdatePassword", GetLogin(HttpContext.Current.User.Identity), HashedPassword);
if (NumberOfRowsAffected > 0)
lblStatus.Text = "Password updated.";
else
{
lblStatus.Text = "Password not updated for this user.";
}
}
catch (Exception ex)
{
lblStatus.Text = "Password was not changed due to an error.";
lblStatus.Text += ex.ToString();
}