检测密码健壮性

来源:互联网 发布:福州地铁软件 编辑:程序博客网 时间:2024/05/01 15:57

typedefNS_ENUM(NSInteger, PasswordStrengthLevel)

{

    PasswordStrengthLevelVeryWeak =0,

    PasswordStrengthLevelWeak,

    PasswordStrengthLevelAverage,

    PasswordStrengthLevelStrong,

    PasswordStrengthLevelVeryStrong,

    PasswordStrengthLevelSecure,

    PasswordStrengthLevelVerySecure

};





+ (PasswordStrengthLevel)checkPasswordStrength:(NSString *)password

{

   NSInteger length = [password length];

   int lowercase = [selfcountLowercaseLetters:password];

   int uppercase = [selfcountUppercaseLetters:password];

   int numbers = [selfcountNumbers:password];

   int symbols = [selfcountSymbols:password];

    

   int score = 0;

    

   if(length < 5)

        score +=5;

   else

       if(length > 4 && length <8)

            score +=10;

       else

           if(length > 7)

                score +=20;

    

   if(numbers == 1)

        score +=10;

   else

       if(numbers == 2)

            score +=15;

       else

           if(numbers > 2)

                score +=20;

    

   if(symbols == 1)

        score +=10;

   else

       if(symbols == 2)

            score +=15;

       else

           if(symbols > 2)

                score +=20;

    

   if(lowercase == 1)

        score +=10;

   else

       if(lowercase == 2)

            score +=15;

       else

           if(lowercase > 2)

                score +=20;

    

   if(uppercase == 1)

        score +=10;

   else

       if(uppercase == 2)

            score +=15;

   else

       if(uppercase > 2)

            score +=20;

    

   if(score == 100)

        returnPasswordStrengthLevelVerySecure;

   else

       if (score >= 90)

            returnPasswordStrengthLevelSecure;

       else

           if (score >= 80)

                returnPasswordStrengthLevelVeryStrong;

           else

               if (score >= 70)

                    returnPasswordStrengthLevelStrong;

               else

                   if (score >= 60)

                        returnPasswordStrengthLevelAverage;

                   else

                       if (score >= 50)

                           return PasswordStrengthLevelWeak;

                       else

                           return PasswordStrengthLevelVeryWeak;

}


+ (int)countLowercaseLetters:(NSString *)password

{

   int count = 0;

    

   for (int i =0; i < [password length]; i++)

    {

        BOOL isLowercase = [[NSCharacterSetlowercaseLetterCharacterSet] characterIsMember:[passwordcharacterAtIndex:i]];

       if(isLowercase == YES)

            count++;

    }

    

   return count;

}


+ (int)countUppercaseLetters:(NSString *)password

{

   int count = 0;

    

   for (int i =0; i < [password length]; i++)

    {

        BOOL isUppercase = [[NSCharacterSetuppercaseLetterCharacterSet] characterIsMember:[passwordcharacterAtIndex:i]];

       if(isUppercase == YES)

            count++;

    }

    

   return count;

}


+ (int)countNumbers:(NSString *)password

{

   int count = 0;

    

   for (int i =0; i < [password length]; i++)

    {

        BOOL isNumber = [[NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"]characterIsMember:[password characterAtIndex:i]];

       if(isNumber == YES)

            count++;

    }

    

   return count;

}


+ (int)countSymbols:(NSString *)password

{

   int count = 0;

    

   for (int i =0; i < [password length]; i++)

    {

        BOOL isSymbol = [[NSCharacterSetcharacterSetWithCharactersInString:@"`~!?@#$€£¥§%^&*()_+-={}[]:\";<>'•\\|/"]characterIsMember:[password characterAtIndex:i]];

       if(isSymbol == YES)

            count++;

    }

    

   return count;

}


0 0
原创粉丝点击