简单密码验证 (优化版)(java)

 **- 1、用户名最多25个字符长度、不能包含空格、单双引号、问号等特殊符号
 - 2、密码6-8位,只能包含字母、数字、特殊符号(_、@、#、$、!)
 - 纯数字、纯字母时,密码强度为弱(★★☆☆☆☆)
 - 字母+符号、数字+符号、数字+字母,强度为中(★★★★☆☆)
 - 同时存在三种字符,强度为强(★★★★★★)**
package userdome;
/**
 *字符串工具类,封装了字符串常用的判断方法
 * @author TR
 *
 */
public class Stringutil {
    public static int strength=0;       //密码强度计数
    public static String correctPart="_@#$!";      //密码中合法字符

     /**
      * 1、用户名最多25个字符长度、不能包含空格、单双引号、问号等特殊符号
      * @param userName
      * @return
      */
    public static boolean iscotteUserName(String userName){
        boolean isCorrect=true;
        if(userName==null||userName.length()>25)return false;
        String unValidString=" \"'?><,";        //非法字符串
        for (char ch : unValidString.toCharArray()) {
            if(userName.contains(Character.toString(ch)))return false;
        }
//      char[] unValidChar={' ','\'','"','?','>','<',','};  //非法字符数组
//      for (char ch : unValidChar) {
//          if(userName.contains(Character.toString(ch)))return false;
//      }
        return isCorrect;
    }
     /**
      * 2、密码6-8位,只能包含字母、数字、特殊符号(_、@、#、$、!)
      * 纯数字、纯字母时,密码强度为弱(★★☆☆☆☆)
      * 字母+符号、数字+符号、数字+字母,强度为中(★★★★☆☆)
      * 同时存在三种字符,强度为强(★★★★★★)
      * @param passWord
      * @return
      */
    public static String validatePassWord(String passWord){
        StringBuilder power=new StringBuilder();    //密码强度,如果返回为"",那么验证失败,验证成功,则返回星号表示密码强度
        if(passWord==null||passWord.length()<6||passWord.length()>8)return power.toString();
        for (char ch : passWord.toCharArray()){ 
            //如果此字符不是数字或字母
            if(!Character.isLetterOrDigit(ch)){ 
                //如果此字符也不是合法符号,则返回密码强度为""
                if(!correctPart.contains(Character.toString(ch)))return power.toString();
            }
        }
        isStrength(passWord);
        for (int i = 1; i < 4; i++) {
            if(i<=strength){
                power.append(String.valueOf("★★"));
            }
            else{
                power.append(String.valueOf("☆☆"));
            }
        }
        return power.toString();
    }
    /**
     * 判断密码强度
     * @param passWord
     * @return
     */
    private static void isStrength(String passWord){
        for (char ch : passWord.toCharArray()) {    //判断是否包含数字
            if(Character.isDigit(ch)){
                strength++;
                break;
                }
        }
        for (char ch : passWord.toCharArray()) {    //判断是否包含字母
            if(Character.isLetter(ch)){
                strength++;
                break;
                }
        }
        for (char ch : passWord.toCharArray()) {    //判断是否包含合法符号
            if(correctPart.contains(Character.toString(ch))){
                strength++;
                break;
                }
        }
    }

你可能感兴趣的:(JAVA,java密码验证,用户名密码申请验证,密码强度验证,java用户申请验证,java)