/// <summary> /// Show passwors summary elements according password /// </summary> private void SetPasswordSummary() { Zxcvbn.Result passwordResult = PasswordEvaluatorEngine.EvaluatePassword(txtPassword.Text); lblPasswordLengthValue.Text = string.Concat(txtPassword.Text.Length, " ch."); lblPasswordCrackTimeValue.Text = passwordResult.CrackTimeDisplay; lblPasswordEntropyValue.Text = string.Concat(Math.Round(passwordResult.Entropy), " bits"); cpbPasswordStrength.Value = passwordResult.Score + 1; cpbPasswordStrength.Text = (passwordResult.Score + 1).ToString(); switch (passwordResult.Score) { case 0: lblPasswordStrength.Text = "Very weak"; lblPasswordStrength.ForeColor = Color.Red; cpbPasswordStrength.ForeColor = Color.Red; cpbPasswordStrength.ProgressColor = Color.Red; break; case 1: lblPasswordStrength.Text = "Weak"; lblPasswordStrength.ForeColor = ControlPaint.Light(Color.Red); cpbPasswordStrength.ForeColor = ControlPaint.Light(Color.Red); cpbPasswordStrength.ProgressColor = ControlPaint.Light(Color.Red); break; case 2: lblPasswordStrength.Text = "Medium"; lblPasswordStrength.ForeColor = ControlPaint.Light(Color.Green); cpbPasswordStrength.ForeColor = ControlPaint.Light(Color.Green); cpbPasswordStrength.ProgressColor = ControlPaint.Light(Color.Green); break; case 3: lblPasswordStrength.Text = "Good"; lblPasswordStrength.ForeColor = Color.Green; cpbPasswordStrength.ForeColor = Color.Green; cpbPasswordStrength.ProgressColor = Color.Green; break; case 4: lblPasswordStrength.Text = "Strong"; lblPasswordStrength.ForeColor = Color.DarkGreen; cpbPasswordStrength.ForeColor = Color.DarkGreen; cpbPasswordStrength.ProgressColor = Color.DarkGreen; break; } }
private bool IsPasswordTooWeak(Zxcvbn.Result result) { return(result.Score < MinScoreAlert); }
public async Task VerifyPasswords() { var accounts = await App.PwdManager.GetPasswordList(); int itemId = 0, numItems = accounts.Count, numSkip = 0; PasswordCheckDataList.Clear(); foreach (PwdListItem item in accounts) { try { if (item.SkipCheck) { numSkip++; continue; } Zxcvbn.Result result = Checker.EvaluatePassword(item.Password); bool bOld = IsPasswordToOld(item); bool bWeak = IsPasswordTooWeak(result); if (bOld || bWeak) { PasswordCheckData checkData = new PasswordCheckData { PwdId = item.Id, LastChange = item.LastPwdChangeDateTime }; if (bOld) { checkData.Issues.Add(PwdIssue.TooOld); } if (bWeak) { checkData.Issues.Add(PwdIssue.TooWeak); } checkData.StrengthData.CalcTime = result.CalcTime; checkData.StrengthData.CrackTime = result.CrackTime; checkData.StrengthData.Entropy = Math.Round(result.Entropy) - 1; checkData.StrengthData.Score = result.Score; PasswordCheckDataList.Add(checkData); } } finally { Device.BeginInvokeOnMainThread(() => { OnVerify?.Invoke(++itemId, numItems, item); }); } } LastCheck = DateTime.Now; NumberOfPassword = numItems; NumberOfSkippedPassword = numSkip; SaveCache(); }