使用BCrypt Nuget包創建一個帶有一些加密的Windows窗體應用程序。該軟件包使用「驗證」方法來檢查密碼和散列。如果密碼和哈希匹配,「驗證」方法返回true。我試圖通過在調用「驗證」方法時執行某些操作來添加一些功能。C# - 窗體窗體 - 如何捕捉任務中未處理的異常
所以我用它作爲一個任務,當我使用以「$ 2 $」作爲輸入進行比較的正確的bcrypt散列時,代碼工作正常。但是,當給定隨機輸入時,程序包會識別出一個無效的salt,並且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);
}
}
}
謝謝[鏈接](http://imgur.com/7lnYAhz) ,像變魔術一樣,我只是沒有指定任何參數catch語句。 – Zee