Вы должны просто позволить GetPassword()
вернуть null
, если пароль не найден.Следующая проблема, однако, заключается в том, что CompareStringToHash()
потерпит неудачу, если вы передадите пустой пароль, поэтому вместо
bool isSame = hasher.CompareStringToHash(txtPassword.Text, hashedPassword);
if (isSame==false)
{
MessageBox.Show("Invalid UserName or Password");
}
вы делаете
if (hashedPassword == null || hasher.CompareStringToHash(txtPassword.Text, hashedPassword)
{
MessageBox.Show("Invalid UserName or Password");
}
Если hashedPassword
равно null
оператор if
будет завершен до того, как попытается выполнить CompareStringToHash()
, поэтому вы не получите исключение.CompareStringToHash()
будет выполняться, только если hashedPassword
не null
.Затем, при условии, что вы сохранили действительную строку (которая у вас будет, потому что вы создаете ее, будет Encrypto), она должна все работать - и без большого количества грязных if
операторов: o)