0
私はデータベースにパスワードを格納するためにBCryptの.Net実装を使用しています。パスワードは切り捨てられ、一部のユーザーのためにBCryptハッシュされたパスワードがデータベースで切り捨てられました
Update [User]
Set [Password]= @NewPassword,
ModifiedOn = GetDate(),
ModifiedBy = 'PasswordChanger'
Where [UserName] = @UserName
:パスワード欄には、VARCHAR(MAX)は
これは、ストアドプロシージャを経由してパスワードを更新するコードです。切り捨て後の例は次のとおりです。$ 2a $ 12 $ XM2
これは必ずしもそうではありません。
切り詰めの原因を理解するのを助けてください。
UPDATE:ここ
は、パスワードを更新するためにSPを呼び出すC#コードです:
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();
}