コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
 private bool IsPasswordTooWeak(Zxcvbn.Result result)
 {
     return(result.Score < MinScoreAlert);
 }
コード例 #3
0
        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();
        }