public static void main(String[] args) throws Exception { String str = "WERUIuy%^*&5467"; int i = checkStrong(str); if(i<=2){ System.out.println("密码强度不够!"); } } /** * 计算出当前密码当中一共有多少种模式 * @param pwd * @return */ public static int checkStrong(String pwd){ if(pwd.length() < 4) return 0; int modes = 0; for(int i = 0;i<pwd.length();i++){ modes |= getCharMode(pwd.charAt(i)); //或 } return bitTotal(modes); } /** * 返回当前字符的模式 * @param i * @return */ public static int getCharMode(int i){ if (i >= 48 && i <= 57) //数字 return 1; if (i >= 65 && i <= 90) //大写字母 return 2; if (i >= 97 && i <= 122) //小写 return 4; else return 8; //特殊字符 } /** * 遍历数的二进制表示,看有多少个1 * @param num * @return */ public static int bitTotal(int num){ int modes = 0; for (int i = 0; i < 4; i++) { if ((num & 1) == 1) modes++; num >>>= 1; } return modes; }
时间: 2024-11-13 16:30:52