检测密码健壮性
来源:互联网 发布:福州地铁软件 编辑:程序博客网 时间: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;
}
- 检测密码健壮性
- 检测this指针是否为空来提高健壮性
- 密码检测密码强度
- 密码强度检测
- 密码强度检测函数
- 密码强度检测
- 检测密码强度
- JavaScript密码强度检测
- 密码强度检测
- 密码强度检测
- 密码强度检测
- jquery 密码强度检测
- 检测密码强度
- 密码强度检测
- 密码强度检测
- php检测密码强度
- 检测密码强度
- 简单密码检测程序
- 一步一步写算法(之hash表)
- DNS bind9配置
- python的Socketserver模块使用,异常处理
- Linux下DISPLAY环境变量的作用
- iOS 清空缓存(递归计算沙盒目录大小)
- 检测密码健壮性
- Redhat, CentOS系统的yum本地软件库设置
- Oracle 删除重复数据只留一条
- 如何查看JDK源码
- java设计模式入门(2)观察者模式
- 【Jsoup学习礼记】解析一个HTML字符串
- 2015产品校招——阿里腾讯百度360小米面经
- spring闲暇一刻一:定时器
- iOS后台如何保持socket长连接和数据传输