C语言实现密码强度检测

2020-03-18 20:01:40王振洲

本文实例为大家分享了C语言实现密码强度检测,供大家参考,具体内容如下

1 方案得分项

一、密码长度:

公式 :+(n*4),其中n表示密码长度

二、大写字母:

公式:+((len-n)*2),其中n表示大写字母个数,len表示密码长度

三、小写字母:

公式:+((len-n)*2),其中n表示小写字母个数,len表示密码长度

四、数字:

公式:+(n*4),其中n表示数字个数 条件:满足n < len,才能得到加分,len表示密码长度

五、符号:

公式:+(n*6),其中n表示符号个数

六、位于中间的数字或符号:

公式:+(n*2),其中n表示位于中间的数字或符号个数

七、最低条件得分:

公式:+(n*2),其中n表示满足的最低条件条目数 条件:只有满足最低条件,才能得到加分

其中最低条件的条目如下:

1.密码长度不小于8位
2.包含大写字母
3.包含小写字母
4.包含数字
5.包含符号

最低条件要求满足条目1并至少满足条目2-5中的任意三条。

2 方案减分项

一、只有字母:

公式:-n,其中n表示字母个数

二、只有数字:

公式:-n,其中n表示数字个数

三、重复字符数(大小写敏感):

该项描述复杂,具体计算方法见如下示例程序:

四、连续大写字母:

公式:-(n*2),其中n表示连续大写字母出现的次数 举例:如输入AUB,则n=2

五、连续小写字母:

公式:-(n*2),其中n表示连续小写字母出现的次数 举例:如输入aub,则n=2

六、连续数字:

公式:-(n*2),其中n表示连续数字出现的次数 举例:如输入381,则n=2

七、正序或逆序字母:

公式:-(n*3),其中n表示连续发生的次数

正序或逆序是指字母表中的顺序 不区分大小写

条件:只有连续3个字母或以上,才会减分,
例1:如输入ABC,则n=1
例2:如输入dcBA,则n=2

八、正序或逆序数字:

公式:-(n*3),其中n表示连续发生的次数 条件:只有连续3个数字或以上,才会减分 例1:如输入123,则n=1, 例2:如输入4321,则n=2 例3:如输入12,则不会减分

九、正序或逆序符号:

公式:-(n*3),其中n表示连续发生的次数 条件:只有连续3个符号或以上,才会减分

3 方案等级划分

根据密码评分,将密码划分成以下5个等级:

>= 80: 非常强(VERY_STRONG)
>= 60: 强(STRONG)
>= 40: 好(GOOD)
>= 20: 弱(WEAK)
>= 0: 非常弱( VERY_WEAK)