【发布时间】:2016-03-11 16:17:02
【问题描述】:
我正在使用 BCrypt Nuget 包创建一个带有一些加密的 Windows 窗体应用程序。该包使用“验证”方法来检查密码和哈希。如果密码和哈希匹配,则“验证”方法返回 true。我正在尝试通过在调用“验证”方法时执行一些操作来向表单添加一些功能。
所以我将它用作一项任务,当我使用以“$2$”开头的正确 bcrypt 哈希作为比较的输入时,代码工作正常。但是当给出随机输入时,包识别出无效的盐并且包抛出 saltParseException,程序崩溃并显示异常未处理的错误。我尝试添加 saltParaseException 处理,但仍然无法正常工作。
private void btncheckPassword_Click(object sender, EventArgs e)
{
bool isMatch = false;
if(txtPlainPasswordCheck.TextLength > 0 && txtHashedPasswordCheck.TextLength > 0)
{
try
{
var Task_VerifyPassword = Task.Factory.StartNew(() => BCrypt.Net.BCrypt.Verify((String)txtPlainPasswordCheck.Text, (String)txtHashedPasswordCheck.Text));
Task_VerifyPassword.ContinueWith(t => { throw new BCrypt.Net.SaltParseException(); }, TaskContinuationOptions.OnlyOnFaulted);
SetCursor(Cursors.WaitCursor);
isMatch = Task_VerifyPassword.Result;
}
catch (BCrypt.Net.SaltParseException e2)
{
SetCheckLabel(e2.Message.ToString(), Color.Red, Color.Black);
}
if (isMatch)
{
SetCheckLabel("Passwords Match", Color.Black, Color.Green);
SetCursor(Cursors.Default);
}
else
{
SetCheckLabel("Passwords Don't Match", Color.Red, Color.Black);
SetCursor(Cursors.Default);
}
}
}
【问题讨论】:
标签: c# winforms exception-handling task-parallel-library