`
shiyongno1
  • 浏览: 8593 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

密码强度等级

    博客分类:
  • Java
 
阅读更多

密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。 
       一、密码长度: 
       5 分: 小于等于4 个字符 
       10 分: 5 到7 字符 
       25 分: 大于等于8 个字符 
       二、字母: 
       0 分: 没有字母 
       10 分: 全都是小(大)写字母 
       20 分: 大小写混合字母 
       三、数字: 
       0 分: 没有数字 
       10 分: 1 个数字 
       20 分: 大于1 个数字 
       四、符号: 
       0 分: 没有符号 
       10 分: 1 个符号 
       25 分: 大于1 个符号 
       五、奖励: 
       2 分: 字母和数字 
       3 分: 字母、数字和符号 
       5 分: 大小写字母、数字和符号 
       最后的评分标准: 
       >= 90: 非常安全 
       >= 80: 安全(Secure) 
       >= 70: 非常强 
       >= 60: 强(Strong) 
       >= 50: 一般(Average) 
       >= 25: 弱(Weak) 
       >= 0:  非常弱

 

public final class Demo {

	public static Safelevel GetPwdSecurityLevel(String pPasswordStr) {
		/* 在这里实现功能 */
		int grade = 0;

		// 一、密码长度:
		grade += checkLength(pPasswordStr);

		// 二、字母:
		grade += checkZiMu(pPasswordStr);

		// 三、数字:
		grade += checkNumber(pPasswordStr);

		// 四、符号:
		grade += checkFuHao(pPasswordStr);

		// 五、奖励:
		grade += jianli(pPasswordStr);

		// 最后的评分标准:
		return pinFen(grade);
	}

	private static Safelevel pinFen(int grade) {
		Safelevel safe;
		if (grade >= 90) {
			safe = Safelevel.VERY_SECURE;
		} else if (grade >= 80) {
			safe = Safelevel.SECURE;
		} else if (grade >= 70) {
			safe = Safelevel.VERY_STRONG;
		} else if (grade >= 60) {
			safe = Safelevel.STRONG;
		} else if (grade >= 50) {
			safe = Safelevel.AVERAGE;
		} else if (grade >= 25) {
			safe = Safelevel.WEAK;
		} else {
			safe = Safelevel.VERY_WEAK;
		}

		return safe;

	}

	private static int jianli(String pPasswordStr) {
		int grade = 0;

		int minNum = getNumber(pPasswordStr, "[a-z]");
		int maxNum = getNumber(pPasswordStr, "[A-Z]");

		int shuZhiNum = (null == pPasswordStr || "".equals(pPasswordStr.trim())) ? 0
				: getNumber(pPasswordStr, "[0-9]");

		int fuHaonum = ((null == pPasswordStr) ? null : pPasswordStr
				.replaceAll("[\\p{Alnum}]", "").replaceAll(" ", "").length());

		if (minNum != 0 && maxNum != 0 && shuZhiNum != 0 && fuHaonum != 0) {// 大小写字母、数字和符号
			grade = 5;
		} else if ((minNum != 0 || maxNum != 0) && shuZhiNum != 0
				&& fuHaonum != 0) {// 字母、数字和符号
			grade = 3;
		} else if ((minNum != 0 || maxNum != 0) && shuZhiNum != 0) {// 字母和数字
			grade = 0;
		}
		return grade;
	}

	private static int checkFuHao(String pPasswordStr) {
		int grade = 0;
		int num = ((null == pPasswordStr) ? null : pPasswordStr.replaceAll(
				"[\\p{Alnum}]", "").replaceAll(" ", "").length());
		if (num == 0) {
			grade = 0;
		} else if (num == 1) {
			grade = 10;
		} else {
			grade = 25;
		}
		return grade;
	}

	private static int checkNumber(String pPasswordStr) {
		int grade = 0;
		int num = getNumber(pPasswordStr, "[0-9]");
		if (num == 0) {
			grade = 0;
		} else if (num == 1) {
			grade = 10;
		} else {
			grade = 20;
		}
		return grade;
	}

	private static int checkLength(String pPasswordStr) {
		int grade = 0;
		int length = pPasswordStr.length();
		if (length >= 8) {
			grade = 25;
		} else if (length >= 5) {
			grade = 10;
		} else {
			grade = 5;
		}
		return grade;
	}

	private static int checkZiMu(String pPasswordStr) {
		int grade = 0;
		int minNum = getNumber(pPasswordStr, "[a-z]");
		int maxNum = getNumber(pPasswordStr, "[A-Z]");
		if (minNum == 0 && maxNum == 0) {
			grade = 0;
		} else if (minNum == 0 || maxNum == 0) {
			grade = 10;
		} else {
			grade = 20;
		}
		return grade;
	}

	private static int getNumber(String str, String s) {
		char[] c = str.toCharArray();
		int count = 0;

		for (char d : c) {
			if ((d + "").matches(s)) {
				count++;
			}
		}

		return count;
	}
}

 

public enum Safelevel {
	VERY_WEAK, /* 非常弱 */
	WEAK, /* 弱 */
	AVERAGE, /* 一般 */
	STRONG, /* 强 */
	VERY_STRONG, /* 非常强 */
	SECURE, /* 安全 */
	VERY_SECURE
	/* 非常安全 */
}

 

分享到:
评论

相关推荐

    密码强度等级.html

    密码强度等级校验

    基于jsp页面的密码强度效果的显示

    7. **pwStrength函数**:这是核心的事件处理函数,根据密码强度等级更新密码强度指示器的颜色。它会改变三个不同强度等级(弱、中、强)背景颜色的元素(通过`getElementById`获取),从而实时显示密码强度。 8. **...

    jquery密码强度检测_密码强度验证_密码强度正则表达式代码_动画效果

    这个函数返回一个介于0到6之间的整数,表示密码强度等级。你可以根据这个分数显示不同的提示或动画效果。例如,我们可以用4种不同级别的图片(pwd-1.png至pwd-4.png)来表示密码强度: ```javascript $('#password'...

    输入一个不少于六位的密码,并判断密码强度

    4. **确定密码强度等级**:根据`hasDigit`、`hasAlpha`和`hasOther`的值,确定密码强度。 ```cpp if (hasDigit && hasAlpha && hasOther) { std::cout 密码强度:强\n"; } else if (hasDigit && hasAlpha) { ...

    易语言检测密码强度

    - 计分模块:根据检查结果计算总分,确定密码强度等级。 - 反馈模块:向用户显示密码强度评估结果,提示改进建议。 理解并掌握这个源码可以帮助你更好地在易语言环境中开发出安全的用户认证系统。同时,这也可以...

    判断用户输入的密码强度

    然后,我们可以更新HTML页面,显示密码强度等级: ```javascript document.getElementById('strength-display').innerText = '密码强度: ' + strengthLevel; ``` 这样,用户在输入密码时就可以看到实时的强度指示...

    jquery密码强度验证

    1. **密码强度等级划分**:通常,我们会将密码强度划分为多个级别,如“太短”、“弱”、“良好”和“强”。这些等级基于一些标准,例如密码长度、包含的字符类型(数字、大小写字母、特殊字符等)以及是否有重复或...

    兼容性较好的jQuery检测密码强度代码.zip

    4. 更新界面元素,显示当前的密码强度等级。 在实际应用中,为了提高用户体验,还可以考虑添加一些附加功能,比如提示用户添加特殊字符、数字等,或者在用户创建过于简单的密码时给予警告。同时,为了确保兼容性,...

    密码强度验证

    这种Demo可能在用户输入密码时提供实时的强度反馈,例如通过颜色变化或文字提示显示密码强度等级,如“弱”、“中等”或“强”。这种方式可以引导用户创建更安全的密码。 5. **Demo4:图形化界面验证**: 此Demo...

    密码强度(web)版例子

    - 用户界面:网页提供一个输入框供用户输入密码,以及一个区域显示密码强度等级,如弱、中等、强等。 - 事件监听:JavaScript中的`addEventListener`函数用于监听用户在输入框中的键盘输入事件,如`keyup`或`input...

    jQuery+CSS3登陆框 附加密码强度指示器

    /* 根据密码强度等级修改背景颜色 */ .weak { background-position: 0 0; } .medium { background-position: 50% 0; } .strong { background-position: 100% 0; } ``` 最后,不要忘记对表单进行验证,确保用户输入...

    Js密码强度验证

    4. **颜色变化的进度条**:根据密码强度等级,可以改变进度条或指示器的颜色。例如,弱密码可以显示红色,中等密码显示黄色,强密码显示绿色。可以使用CSS类和JavaScript来动态更改元素的样式。 5. **反馈提示**:...

    数据安全密码强度测试实验.doc

    total_score是length_score与complexity_score的总和,用以最终判定密码强度等级。根据得分的不同,密码被分为“强”、“中”、“弱”三个等级。 实验内容还包括了对不同强度密码的测试,通过列表推导式为每个密码...

    js正则表达式验证密码强度【推荐】

    - 有一个`<em id="strength"></em>`元素显示密码强度等级(低、中、高)。 - 还有一个`<div id="strength_length"></div>`元素用作进度条,显示密码长度。 2. **CSS样式**: - 为不同强度等级设置了背景颜色和...

    JavaScript 校验密码强度

    // 输出密码强度等级 ``` 在这个示例中,我们为每个满足的条件赋予1分,然后根据总分数判断密码强度。 在实际应用中,可以将这些功能封装到一个自定义的输入框组件中,实时显示密码强度指示器。例如,可以使用...

    密码强度评估源码 v1.0-源码.zip

    4. **用户界面**:源码可能还包含了用户交互的部分,例如显示密码强度等级的图形元素或提示信息。 5. **测试用例**:学习源码时,可能会发现测试代码,这些用例帮助验证了密码强度评估功能的正确性。 通过深入研究...

    表单中的JS密码强度计算、长度计算程序

    - **反馈显示**:程序会实时显示密码强度等级,如弱、中、强,通常通过进度条或文字提示用户改进密码。 2. **密码长度计算**: - **字符计数**:JS可以获取用户输入的字符串长度,即密码的字符数量,这是衡量密码...

    java实现的密码强度检测功能完整示例

    java实现的密码强度检测功能完整示例主要介绍了java实现的密码强度检测功能,结合完整实例形式分析了java针对密码强度检测相关的字符串遍历、判断,以及输出密码强度等级相关操作技巧。 密码强度检测是指对密码的...

    JS判断密码强度与C#判断密码强度

    这个函数会返回一个介于0到4之间的值,表示密码的强度等级。 在前端展示时,可以利用这个返回值动态更新密码强度指示器(如进度条或星级评分),同时根据强度是否满足最低要求来启用或禁用提交按钮。 接下来,我们...

Global site tag (gtag.js) - Google Analytics