Java判断密码的强度

检查字符串的密码强度:由一类字符构成,输出”强度弱”;由两类字符构成,输出”强度中“;由三类以上(含三个)字符构成,输出”强度强“
Public String check (String password){
//放置代码
}

可以试下下面的代码:

public String check(String password) {
    boolean hasLowerCase = false;
    boolean hasUpperCase = false;
    boolean hasDigit = false;
    for (char c : password.toCharArray()) {
        if (Character.isLowerCase(c)) {
            hasLowerCase = true;
        } else if (Character.isUpperCase(c)) {
            hasUpperCase = true;
        } else if (Character.isDigit(c)) {
            hasDigit = true;
        }
    }
    int categoryCount = 0;
    if (hasLowerCase) {
        categoryCount++;
    }
    if (hasUpperCase) {
        categoryCount++;
    }
    if (hasDigit) {
        categoryCount++;
    }
    if (categoryCount >= 3) {
        return "强度强";
    } else if (categoryCount == 2) {
        return "强度中";
    } else {
        return "强度弱";
    }
}


  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7784794
  • 这篇博客也不错, 你可以看下使用Java写出一个程序:接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
  • 你还可以看下java参考手册中的 java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-注释是元数据的一种形式,为编译器提供信息。本课介绍了在程序中有效使用注释的地方和方法。-预定义注解类型
  • 除此之外, 这篇博客: JAVA:编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序中的 结果: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 请添加图片描述

  • 您还可以看一下 汤小洋老师的手把手搭建Java学生信息管理系统【附源码】(毕设)课程中的 课程概述小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答: Java代码判断密码强度问题:

    以正则表达式为基础,对密码进行判断。弱密码:纯数字或纯字母;中密码:数字和字母的组合;强密码:数字、字母和特殊字符的组合。具体实现如下:

    public class PasswordChecker {
    
        /**
         * 判断密码强度
         * 弱密码:纯数字或纯字母
         * 中密码:数字和字母的组合
         * 强密码:数字、字母和特殊字符的组合
         * @param password 待判断密码
         * @return 密码强度
         */
        public static int checkPasswordStrength(String password) {
            // 密码强度标识:0-弱密码,1-中密码,2-强密码
            int strongthFlag = 0;
            // 匹配密码纯数字或纯字母
            String pureNumPattern = "^[0-9]*$";
            String pureLetterPattern = "^[a-zA-Z]*$";
            Pattern pattern = null;
            Matcher matcher = null;
    
            // 纯数字判断
            pattern = Pattern.compile(pureNumPattern);
            matcher = pattern.matcher(password);
            if (matcher.matches()) {
                strongthFlag = 0;
                System.out.println("密码强度:弱密码,密码只包含数字!");
                return strongthFlag;
            }
    
            // 纯字母判断
            pattern = Pattern.compile(pureLetterPattern);
            matcher = pattern.matcher(password);
            if (matcher.matches()) {
                strongthFlag = 0;
                System.out.println("密码强度:弱密码,密码只包含字母!");
                return strongthFlag;
            }
    
            // 特殊字符判断
            String specialContentPattern = ".*[@`~!#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!#¥%……&*()——+|{}‘;:”“'。,、?].*$";
            pattern = Pattern.compile(specialContentPattern);
            matcher = pattern.matcher(password);
            boolean hasSpecialChar = matcher.matches();
    
            // 数字和字母判断
            String letterAndNumPattern = "^[A-Za-z0-9]+$";
            pattern = Pattern.compile(letterAndNumPattern);
            matcher = pattern.matcher(password);
            boolean isLetterAndNum = matcher.matches();
    
            if (hasSpecialChar && isLetterAndNum) {
                strongthFlag = 2;
                System.out.println("密码强度:强密码,密码包含数字、字母和特殊字符!");
                return strongthFlag;
            } else if (isLetterAndNum) {
                strongthFlag = 1;
                System.out.println("密码强度:中等密码,密码由数字和字母组成!");
                return strongthFlag;
            } else {
                strongthFlag = 0;
                System.out.println("密码强度:弱密码,密码由数字、字母和特殊字符组成!");
                return strongthFlag;
            }
        }
    }
    

    字符串只由单一种类字符构成判断:

    首先判空,然后通过正则表达式判断输入的字符串是否只由数字或字母等单一类型组成。实现代码如下:

    public class StringCheck {
        /**
         * 判断字符串是否只由单一种类字符构成
         * @param checkString 待检查字符串
         * @return true-由单一种类字符组成;false-字符串中有两种或以上的字符
         */
        public static boolean isSingleChar(String checkString) {
            boolean isSingleChar = false;
            if (checkString == null || "".equals(checkString)) {
                System.out.println("输入字符串不能为空!");
                return isSingleChar;
            }
            String pureNumPattern = "^[0-9]*$";
            String pureLetterPattern = "^[a-zA-Z]*$";
    
            Pattern pattern = null;
            Matcher matcher = null;
    
            pattern = Pattern.compile(pureNumPattern);
            matcher = pattern.matcher(checkString);
            if (matcher.matches()) {
                System.out.println("输入字符串只由数字组成!");
                isSingleChar = true;
                return isSingleChar;
            }
    
            pattern = Pattern.compile(pureLetterPattern);
            matcher = pattern.matcher(checkString);
            if (matcher.matches()) {
                System.out.println("输入字符串只由字母组成!");
                isSingleChar = true;
                return isSingleChar;
            }
    
            System.out.println("输入字符串由两种或以上的字符构成!");
            return isSingleChar;
        }
    }