密码强度测试工具,Java版本,直接运行即可。

例如:

7418520*963.-+

综合得分:

128分。

具体编码: 

package Action;import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 密码最低要求8字符<br/>* 最少符合下列四项中三项规则: 大写英文字符、小写英文字符、数字、符号<br/>* * 增加字符的变化能提高强度<br/>* 最后的分数为加分减分之后的sum总和<br/>*/
public class PassWord {private String psw;private int length;// 密码长度private int upperAlp = 0;// 大写字母长度private int lowerAlp = 0;// 小写字母长度private int num = 0;// 数字长度private int charlen = 0;// 特殊字符长度/*** 测试主函数* @param args*/public static void main(String[] args) {PassWord pwd=new PassWord("7418520*963.-+");int jiafen = pwd.jiafen();int jianfen = pwd.jianfen();System.out.println("加分合计:"+jiafen+"分");System.out.println("减分合计:"+jianfen+"分");System.out.println("总计得分:"+(jiafen+jianfen)+"分");}/*** new的时候直接传递参数用* @param psw*/public PassWord(String psw) {this.psw = psw.replaceAll("\\s", "");this.length = psw.length();}// 密码长度积分public int CheckPswLength() {return this.length * 4;}// 大写字母积分public int CheckPswUpper() {String reg = "[A-Z]";Pattern pattern = Pattern.compile(reg);Matcher matcher = pattern.matcher(psw);int j = 0;while (matcher.find()) {j++;}this.upperAlp = j;if (j <= 0) {return 0;}return (this.length - j) * 2;}// 测试小写字母字符public int CheckPwsLower() {String reg = "[a-z]";Pattern pattern = Pattern.compile(reg);Matcher matcher = pattern.matcher(this.psw);int j = 0;while (matcher.find()) {j++;}this.lowerAlp = j;if (j <= 0) {return 0;}return (this.length - j) * 2;}// 测试数字字符public int checkNum() {String reg = "[0-9]";Pattern pattern = Pattern.compile(reg);Matcher matcher = pattern.matcher(this.psw);int j = 0;while (matcher.find()) {j++;}this.num = j;if (this.num == this.length) {return 0;}return j * 4;}// 测试符号字符public int checkChar() {charlen = this.length - this.upperAlp - this.lowerAlp - this.num;return this.charlen * 6;}/*** 密码中间穿插数字或符号* * @return*/public int checkNumOrCharInStr() {int j = this.num + this.charlen - 1;if (j < 0) {j = 0;}if (this.num + this.charlen == this.length) {j = this.length - 2;}return j * 2;}/*** 最低要求标准<br/>* 该方法需要在以上加分方法使用后才可以使用* * @return*/public int LowerQuest() {int j = 0;if (this.length >= 8) {j++;}if (this.upperAlp > 0) {j++;}if (this.lowerAlp > 0) {j++;}if (this.num > 0) {j++;}if (this.charlen > 0) {j++;}if (j >= 4) {} else {j = 0;}return j * 2;}/** =================分割线===扣分项目===================== **/// 只包含英文字母public int OnlyHasAlp() {if (this.length == (this.upperAlp + this.lowerAlp)) {return -this.length;}return 0;}// 只包含数字public int OnlyHasNum() {if (this.length == this.num) {return -this.length;}return 0;}// 重复字符扣分public int repeatDex() {char[] c = this.psw.toLowerCase().toCharArray();HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();for (int i = 0; i < c.length; i++) {if (hashMap.containsKey(c[i])) {hashMap.put(c[i], hashMap.get(c[i]) + 1);} else {hashMap.put(c[i], 1);}}int sum = 0;Iterator<Entry<Character, Integer>> iterator = hashMap.entrySet().iterator();while (iterator.hasNext()) {int j = iterator.next().getValue();if (j > 0) {sum = sum + j * (j - 1);}}return -sum;}// 连续英文大写字符public int seriseUpperAlp() {int j = 0;char[] c = this.psw.toCharArray();for (int i = 0; i < c.length - 1; i++) {if (Pattern.compile("[A-Z]").matcher(c[i] + "").find()) {if (Pattern.compile("[A-Z]").matcher(c[i + 1] + "").find()) {j++;}}}return -2 * j;}// 连续英文小写字符public int seriseLowerAlp() {String reg = "[a-z]";int j = 0;char[] c = this.psw.toCharArray();for (int i = 0; i < c.length - 1; i++) {if (Pattern.compile(reg).matcher(c[i] + "").find() && c[i] + 1 == c[i + 1]) {j++;}}return -2 * j;}// 连续数字字符public int seriseNum() {String reg = "[0-9]";Pattern pattern = Pattern.compile(reg);char[] c = this.psw.toCharArray();int j = 0;for (int i = 0; i < c.length - 1; i++) {if (pattern.matcher(c[i] + "").matches() && pattern.matcher(c[i + 1] + "").matches()) {j++;}}return -2 * j;}// 连续字母abc def之类超过3个扣分 不区分大小写字母public int seriesAlp2Three() {int j = 0;char[] c = this.psw.toLowerCase(Locale.CHINA).toCharArray();for (int i = 0; i < c.length - 2; i++) {if (Pattern.compile("[a-z]").matcher(c[i] + "").find()) {if ((c[i + 1] == c[i] + 1) && (c[i + 2] == c[i] + 2)) {j++;}}}return -3 * j;}// 连续数字123 234之类超过3个扣分public int seriesNum2Three() {int j = 0;char[] c = this.psw.toLowerCase(Locale.CHINA).toCharArray();for (int i = 0; i < c.length - 2; i++) {if (Pattern.compile("[0-9]").matcher(c[i] + "").find()) {if ((c[i + 1] == c[i] + 1) && (c[i + 2] == c[i] + 2)) {j++;}}}return -3 * j;}public int jiafen() {System.out.println("密码字符=" + CheckPswLength());System.out.println("大写英文字符=" + CheckPswUpper());System.out.println("小写英文字符=" + CheckPwsLower());System.out.println("数字字符=" + checkNum());System.out.println("符号字符=" + checkChar());System.out.println("密码中间查查数字或符号字符=" + checkNumOrCharInStr());System.out.println("已连密码最低要求项目=" + LowerQuest());return CheckPswLength()+CheckPswUpper()+CheckPwsLower()+checkNum()+checkChar()+checkNumOrCharInStr()+LowerQuest();}public int jianfen() {System.out.println("只有英文字符=" + OnlyHasAlp());System.out.println("只有数字字符=" + OnlyHasNum());System.out.println("重复字符 (Case Insensitive)=" + repeatDex());System.out.println("重复英文大写字符=" + seriseUpperAlp());System.out.println("重复英文小写字符=" + seriseLowerAlp());System.out.println("连续数字字符=" + seriseNum());System.out.println("连续字母超过三个(如abc,def)=" + seriesAlp2Three());System.out.println("连续数字超过三个(如123,234)=" + seriesNum2Three());return OnlyHasAlp()+OnlyHasNum()+repeatDex()+seriseUpperAlp()+seriseLowerAlp()+seriseNum()+seriesAlp2Three()+seriesNum2Three();}
}

密码强度测试工具包【Java】_测试用例相关推荐

  1. 【推荐】一个不错的密码强度测试网站

    http://password.mx500.com/ 一个不错的密码强度测试网站,在危险重重的互联网,真的需要一个简单易记而又强度很高的密码. 转载于:https://www.cnblogs.com/ ...

  2. mysql密码强度不够怎么解决_安装ISPConfig 遇到的mysql密码强度问题

    发表于 2020-03-25 16:15:52 by 月小升 Login in to MySQL and disable validate_password with: UNINSTALL PLUGI ...

  3. 密码格式 密码强度 正则表达式

    密码长度8--16个字符,且区分大小写: 不能使用空格.中文 密码需要使用大写字母.小写字母.数字及特殊符号中至少三种的组合 change = (e) => {const Epwd = e.ta ...

  4. 谈谈网页产品该如何评估密码强度

    Guofu 的 第 37 篇 文章分享 2022年 第 12 篇 最近因为在做网页端产品中接触到密码强度设置问题,找了不少解决方案,发现大多基于google提出的以密码长度.英文大小写以及符号组合计分 ...

  5. java正则表达式 密码强度_密码验证,密码强度正则表达式

    当用户登录网站时,一般要求用户提供登录该网站的用户名称和密码.从某种意义上说,密码的复杂程度越高,用户的信息安全性越高.因此,很多网站在注册用户信息或修改用户密码时,往往会提供一个密码强度的说明,从而 ...

  6. js密码强度正则表达式_这20个正则表达式,能让你少写100行代码

    正则表达式,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校 ...

  7. 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

    相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...

  8. jsf 自定义属性_如何在JSF中实现自定义密码强度指示器

    jsf 自定义属性 使用JavaScript验证密码强度是一项常见任务. 在本文中,我将展示如何向基于JSF的Web应用程序添加密码强度指示器. 的 PrimeFaces中的密码组件已经具有密码强度的 ...

  9. js密码强度正则表达式_知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行

    正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于 ...

最新文章

  1. 开源项目之树莓派---无线监控摄像头
  2. centos 7 文档服务器,centos 7 web服务器
  3. SpringBoot运行异常时捕获
  4. 漫谈C#编程中的多态与new关键字
  5. 4g内存只有1.6g可用_linux服务器内存异常,究竟在哪消耗了2.5G?
  6. 前端开发大师修炼指南
  7. PostgreSQL 数据离散性 与 索引扫描性能(btree and bitmap index scan)
  8. java spark 教程_Spark基础教程——向Spark传递函数(Java篇)
  9. optuna 自动化调参利器
  10. EDA365_skill2.5百度网盘资源
  11. 点云高斯曲率计算(MATLAB)
  12. FAT32/exFAT/NTFS,三种U盘格式的区别
  13. 微软在上海有哪些办公地点?上下班来回三小时?不止闵大荒!
  14. JS 不可逆加密后半部分,去混淆还原代码。
  15. Hbuilder开发APP(一)——底部导航条简单实现
  16. 欢迎加入知识星球 [ Hi Android ]
  17. Python+OpenCV 调用手机摄像头并实现人脸识别
  18. mysql 13位时间戳转时间戳_时间戳换算(13位时间戳转换工具 在线)
  19. PREEMPT-RT
  20. 【深度学习知识】常见的梯度下降算法原理

热门文章

  1. 计算机硬件市场调查实验报告,计算机组装与维护实训报告范例.doc
  2. loginform登录表单 vs_【VSRC唯科普】穿越网页表单与登录窗口的采集(第9/14篇)...
  3. linux静态编译libcurl,libcurl嵌入式Linux移植
  4. java inputtools_Java后台开发常用工具类
  5. 深度学习总结:GAN,原理,算法描述,pytoch实现
  6. 在事务方法中调用另外一个事务方法,被调用方法的事务没起作用
  7. 有时间担心中年危机,还不如用忧虑的时间来提升自己——再论程序员该如何避免所谓的中年危机...
  8. Python3.7版本unittest框架添加用例的方法
  9. 使用Ajax的Time实现倒计时功能
  10. Cucumber 入门一