欢欢蛋 发表于 2024-6-17 02:32:18

c# 检测密码强度,评分规则仿google

参考delphi的代码更改为C#
Delphi 检测密码强度 规则(仿 google)
仿 google 评分规则

一、密码长度:

5 分: 小于等于 4 个字符
10 分: 5 到 7 字符
25 分: 大于等于 8 个字符
二、字母:

0 分: 没有字母
10 分: 全都是小(大)写字母
20 分: 大小写混合字母
三、数字:

0 分: 没有数字
10 分: 1 个数字
20 分: 大于等于 3 个数字
四、符号:

0 分: 没有符号
10 分: 1 个符号
25 分: 大于 1 个符号
五、奖励:

2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号
最后的评分标准:

>= 90: 非常安全
>= 80: 安全(Secure)
>= 70: 非常强
>= 60: 强(Strong)
>= 50: 一般(Average)
>= 25: 弱(Weak)
>= 0: 非常弱
代码如下

`
    /// <summary>
    /// 得到强度的文本描述
    /// </summary>
    /// <param name="password"></param>
    /// <returns></returns>
    public static string GetkPasswordStrong(string password)
    {
      int strong=CheckPasswordStrong(password);
      if (strong >= 90)
            return $"非常安全{strong}";
      else if (strong >= 80)
            return $"安全{strong}";
      else if (strong >= 70)
            return $"非常强{strong}";
      else if (strong >= 60)
            return $"强{strong}";
      else if (strong >= 50)
            return $"一般{strong}";
      else if (strong >= 25)
            return $"弱{strong}";
      else
            return $"非常弱{strong}";
    }

    /// <summary>
    /// 检测密码强度,规则(仿 google)
    ///
    ///= 90: 非常安全
    ///>= 80: 安全(Secure)
    ///>= 70: 非常强
    ///>= 60: 强(Strong)
    ///>= 50: 一般(Average)
    ///>= 25: 弱(Weak)
    ///>= 0: 非常弱
    /// </summary>
    /// <param name="password"></param>
    /// <returns></returns>
    public static int CheckPasswordStrong(string password)//检测密码强度规则(仿 google)
    {
      int Result = 0;
      int i, countLowercase, countUppercase, countDigit, countSymbol;

      int iLen=password.Length;
      if (iLen <= 4)
            Result = 5;
      else if (iLen >= 5 && iLen <= 7)
            Result = 10;
      else if (iLen >= 8)
            Result = 25;

      countLowercase = 0;
      countUppercase = 0;
      countDigit = 0;
      countSymbol = 0;

      for (i = 0; i < iLen;i++)
      {
            char c= password;
            if (c >= '0' && c <= '9')
                countDigit++;
            else if (c >= 'a' && c <= 'z')
                countLowercase++;
            else if (c >= 'A' && c <= 'Z')
                countUppercase++;
            else
                countSymbol++;
      }

      //大小写
      //0 分: 没有字母
      //10 分: 全都是小(大)写字母
      //20 分: 大小写混合字母

      if (countLowercase == 0 && countUppercase == 0)
            Result = Result + 0;
      else if ((countLowercase == 0 && countUppercase > 0) || (countLowercase > 0 && countUppercase == 0))
            Result = Result + 10;
      else if (countLowercase >0 && countUppercase > 0)
            Result = Result + 20;

      // 计算数字得分
      if (countDigit == 0)
            Result = Result + 0;
      else if (countDigit == 1)
            Result = Result + 10;
      else if (countDigit >= 3)
            Result = Result + 20;

      //符号评分
      if (countSymbol == 0)
            Result = Result + 0;
      else if (countSymbol == 1)
            Result = Result + 10;
      else if (countSymbol > 1)
            Result = Result + 25;

      //五、奖励:
      //2 分: 字母和数字
      //3 分: 字母、数字和符号
      //5 分: 大小写字母、数字和符号
      if ((countLowercase > 0) && (countUppercase > 0) && (countDigit > 0) && (countSymbol == 0))
            Result = Result + 2;
      else if ((countLowercase > 0) && (countUppercase > 0) && (countDigit > 0) && (countSymbol > 0))
            Result = Result + 5;
       else if (((countLowercase > 0) || (countUppercase > 0)) & (countDigit > 0) && (countSymbol > 0))
            Result = Result + 3;

      return Result;

    }`

来源:https://www.cnblogs.com/james-yu/p/18251480
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: c# 检测密码强度,评分规则仿google