密码验证

时间:2013-10-25 08:31:19

标签: java

我需要我的代码来检查密码,密码中的一个字母应该是大写的。当用户进入时。 请协助。

        int digcheck=0,charcheck=0,symbcheck=0;
        for (int i = 0; i < passwordraw.length(); i++) {
             if (Character.isDigit(passwordraw.charAt(i)))
             {
                digcheck++; 
             }
             else if(Character.isLetter(passwordraw.charAt(i))) 
             {
                charcheck++;
             }
             else
             {
                symbcheck++; 
             }              
        }
        if(digcheck<3)
        {
            digcheck=0;
            throw new OBSSecurityException("INVALID PASSWORD! Must have atleast three(3) digits.");
        }else if(charcheck<5)
        {
            charcheck=0;
            throw new OBSSecurityException("INVALID PASSWORD! Must have atleast five(5) alpha.");
        }
        else if(symbcheck<1)
        {
            symbcheck=0;
            throw new OBSSecurityException("INVALID PASSWORD! Must have atleast one(1) symbol.");
        }

4 个答案:

答案 0 :(得分:2)

使用正则表达式。

使密码与.*[A-Z]+.*匹配 这将使您的密码至少有一个大写字符

[编辑] 您也可以使用正则表达式来查找其他限制。

至少有3位数字可以使用此正则表达式

.*[0-9]{1}.*[0-9]{1}.*[0-9]{1}.*

这将匹配任何加1个数字,更多的东西,至少一个数字等等..你可以使用与其他验证类似的正则表达式,如果你需要帮助,请告诉我们

答案 1 :(得分:0)

不要使用嵌套的else-if,因为您的条件不同。如果条件为真,则跳过其他两个条件。

   if(digcheck<3){
        digcheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast three(3) digits.");
    }

   if(charcheck<5){
        charcheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast five(5) alpha.");
    }

   if(symbcheck<1){
        symbcheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast one(1) symbol.");
    }

答案 2 :(得分:0)

编写一个检查密码是否包含至少一个大写字符的方法:

public boolean containsAtLeastOneUpperCase(String password) {
    for(Character c : password.toCharArray()) {
        if (Character.isUpperCase(c)) {
            return true;
        }
    }
    return false;
}

答案 3 :(得分:0)

int digcheck=0,charcheck=0,symbcheck=0,caseCheck=0;
    for (int i = 0; i < passwordraw.length(); i++) {
         if (Character.isDigit(passwordraw.charAt(i)))
         {
            digcheck++; 
         }
         else if(Character.isLetter(passwordraw.charAt(i))) 
         {
            charcheck++;
            if(Character.isUpperCase(passwordraw.charAt(i))){
              caseCheck++;
            }
         }
         else
         {
            symbcheck++; 
         }              
    }
    if(digcheck<3)
    {
        digcheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast three(3) digits.");
    }else if(charcheck<5)
    {
        charcheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast five(5) alpha.");
    }
    else if(symbcheck<1)
    {
        symbcheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast one(1) symbol.");
    }
   else if(caseCheck<1)
    {
        caseCheck=0;
        throw new OBSSecurityException("INVALID PASSWORD! Must have atleast one(1) Uppercase Letter.");
    }