首页 > 编程语言 >c# 检测密码强度,评分规则仿google

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

时间:2024-06-16 23:35:07浏览次数:31  
标签:countDigit google countSymbol c# else 评分 Result && strong

参考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[i];
            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;

    }

`

标签:countDigit,google,countSymbol,c#,else,评分,Result,&&,strong
From: https://www.cnblogs.com/james-yu/p/18251480

相关文章

  • C. Colorful Grid
    原题链接题解1.最小距离是n+m-22.后退多少就要前进多少,所以合法距离一定是偶数3.猜测并验证n+m,n+m+2,n+m+4是否可行4.如果n+m,我可以在终点设一个弯5.如果n+m+2,我可以在起点设一个弯6.两个弯可以组成任意偶数code#include<bits/stdc++.h>usingnamespacestd;intn,m,k;......
  • typora通过picgo配置图床
    满足大部分需求:gitee图床教程链接:https://zhuanlan.zhihu.com/p/567668223?utm_id=0但gitee有1M的图片限制,若需要高清图片,可配置腾讯云cos图床高清图片需求:腾讯云cos图床教程链接:https://cloud.tencent.com/developer/article/1834573两者优缺点对比:gitee腾讯云cos......
  • 【国赛赛题详解】2024年数学建模国赛ABCDEF题(点个关注,后续会更新)
     您的点赞收藏是我继续更新的最大动力!一定要点击如下的蓝色字体链接,那是获取资料的入口!点击链接加入群聊【2024国赛资料合集】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=eQt5WRIvc5-fogZRrrahAhbqDa2nKfW8&authKey=%2BqQfThTxNnhw5LGJFRIcneF8JXBj1ufd2K01UpKPrpcgkKDskF......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-012 计算指数
    L1-012计算指数真的没骗你,这道才是简单题——对任意给定的不超过10的正整数n,要求你输出2^n。不难吧?输入格式:输入在一行中给出一个不超过10的正整数n。输出格式:在一行中按照格式2^n=计算结果输出2^n的值。输入样例:5输出样例:2^5=32C语言参考......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-009 N个数求和
    L1-009N个数求和本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1a2/b2…给出N个有理数。题目保证所有分子和分母都在长整型范围......
  • Anime Girls Pack
    动漫女孩包35个动画(就地)支持人形。8情绪。角色列表:原艾艾琪惠美子惠理文子星薰和子佳子奈子理子凛老师小樱老师津雨僵尸女孩01下载:​​Unity资源商店链接资源下载链接效果图:......
  • 【国赛赛题详解】2024年数学建模国赛ABCDEF题(点个关注,后续会更新)
    您的点赞收藏是我继续更新的最大动力!一定要点击如下的蓝色字体链接,那是获取资料的入口!点击链接加入群聊【2024国赛资料合集】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=eQt5WRIvc5-fogZRrrahAhbqDa2nKfW8&authKey=%2BqQfThTxNnhw5LGJFRIcneF8JXBj1ufd2K01UpKPrpcgkKDskFkr......
  • 创建Docker容器与外部机通信(端口映射的方式)
    一、检查端口是否被占用1.1 查看正在使用中的TCP和UDP端口:ss-tulnLISTEN:表示端口正在监听连接,意味着这些端口已经被系统服务使用。比如,如果你看到"tcp000.0.0.0:80800.0.0.0:*LISTEN",这意味着8080端口被一个服务监听,并等待连接。 判断端口是否被占用:如果你想......
  • React 使用 Zustand 详细教程
    前言Redux、MobX和ContextAPI等技术的存在,使得管理大型应用的状态变得更加可行。本教程要深入探讨的是Zustand——一个极简且高效的状态管理库,详细介绍如何在React项目中使用Zustand来管理状态。什么是Zustand?Zustand是一个简单、小体积(只有不到1kB)且性能优......
  • [0基础]如何搭建一个cs2d的服务器
    前言想要开一台24小时不间断的cd2d服务器?官方教程有些含糊?跟着教程来,包你学会看清标题,不是cs2,是cs2d!前期准备工作首先你需要一台云服务器或虚拟主机(如果自己有一台物理服务器,自行在目录中跳转相关内容)这里推荐雨云的美国洛杉矶极速二区【别问为什么不选延迟更低的香......