密码验证合格程序(算法)
2023-06-13 09:15:54 时间
/**
* 021Abc9Abc1
* 1.长度超过8位
* 2.包括大小写字母.数字.其它符号,以上四种至少三种
* 3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
*/
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
validation(str);
}
private static void validation(String str) {
// 1.长度超过8位
if (str.length() <= 8) {
System.out.println("不合格");
return;
}
// 2.包括大小写字母.数字.其它符号,以上四种至少三种
int little = 0;
int max = 0;
int num = 0;
int other = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) <= 'z' && str.charAt(i) >= 'a') {
little = 1;
} else if (str.charAt(i) <= 'Z' && str.charAt(i) >= 'A') {
max = 1;
} else if (str.charAt(i) <= '9' && str.charAt(i) >= '0') {
num = 1;
} else {
other = 1;
}
}
if (little + max + num + other < 3) {
System.out.println("不合格");
return;
}
// 3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
boolean flag = getTwoLength(str, 0, 2);
if (!flag) {
System.out.println("不合格");
} else {
System.out.println("合格");
}
}
private static boolean getTwoLength(String str, int s, int e) {
if(e > str.length()){
return true;
}
if (!str.substring(e).contains(str.substring(s, e))) {
s = s + 1;
e = e + 1;
return getTwoLength(str, s, e);
} else {
return false;
}
}
相关文章
- OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义
- 密码库LibTomCrypt学习记录——(2.12)分组密码算法的工作模式——OMAC认证模式
- WPF TextBox模仿PasswordBox的密码显示功能
- 马拉车算法 (最长回文串 例题 密码截获)----C语言—菜鸟级
- 密码发展史以及常用编码算法介绍
- 取消xcode每次运行都提示输入用户名密码
- 区块链密码基础之签名算法(二)
- 分享一个Java开发都用得到的密码摘要算法包
- 教你处理 AWS Windows密码丢失重置的问题
- Linux下SSH免密码登录配置详解
- 了解Linux系统中的随机密码生成(linux随机密码)
- Linux账户密码管理小技巧(linux账号密码)
- 警惕!Redis密码默认安全隐患(redis密码默认)
- Oracle用户密码过期:如何修改(oracle用户密码过期)
- 安全保证:Linux 密码哈希算法(linux密码hash)
- Su 密码Linux:安全无忧的系统实现(su密码linux)
- 恢复Kali Linux 帮助你恢复MySQL密码(kalimysql密码)
- 基于Pari数学软件浅谈RSA算法相关密码题型(基础篇)
- MySQL密码安全:确保你的密码复杂度(mysql密码复杂度)
- SQL Server如何修改账户密码(sqlserver改密码)
- 从MSSQL账户中安全读取密码(读取mssql账户密码)
- 掌控带密码Redis启停安全保障你的线上数据(带密码redis启停)
- 如何正确设置Redis安全密码(怎么设置redis密码)
- php验证用户名是否以字母开头与验证密码实例