我正在开发一个 Android 应用程序,我的任务之一是检查密码的强度。
是否有任何用于检查密码强度的内置功能?
为了回答这个问题,没有 Android 功能可以做到这一点,最接近和最好的方法是使用 Mkyong 在他的博客上建议的正则表达式:
private Pattern pattern;
private Matcher matcher;
private static final String PASSWORD_PATTERN =
"((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
public PasswordValidator(){
pattern = Pattern.compile(PASSWORD_PATTERN);
}
/**
* Validate password with regular expression
* @param password password for validation
* @return true valid password, false invalid password
*/
public boolean validate(final String password){
matcher = pattern.matcher(password);
return matcher.matches();
}
听起来您需要一个外部库,例如http://code.google.com/p/vt-middleware/wiki/vtpassword等。
或者编写一些代码很简单,比如检查它有多长,它有什么字符等等,并根据它打印出不同的东西。
如果说用户有一个 10 长度的密码和一些大写字符,您可以在此基础上增加一些密码强度参数,奖励更复杂的密码。您可以自己设置阈值。
如果您不想使用外部库..您可以自己检查..这样的事情:
public void onSubmitClicked(View v)
{
String pass = passwordEditText.getText().toString();
if(TextUtils.isEmpty(pass) || pass.length < [YOUR MIN LENGTH])
{
passwordEditText.setError("You must more characters in your password");
return;
}
if(....){
// do other controls here
}
}