要求如下:
1,必须包含大小写(8-20)
2,必须包含数字
3,必须包含特殊字符
4,不能连续数字或字母
我现在已经实现了前三点,第四点真的难到我了,比如qaz,qwer,1234这种都,都不能通过校验,这种@Ab180test可以通过
想到纯数字的办法了,有点投机取巧,感谢1楼大哥的代码指点
public static boolean isOrderNumeric(String numOrStr) {
boolean tag = false;
int count1 = 0;
int count2 = 0;
int count3 = 0;
for (int i = 0;i<numOrStr.length();i++){
if (tag){
if (Character.isDigit(numOrStr.charAt(i))){
int num1 = Integer.parseInt(numOrStr.charAt(i) + "");
int num2 = Integer.parseInt(numOrStr.charAt(i - 1) + "") + 1;
if (num1 == num2) {
count1 += 1;
if (count1 >= 2){
return true;
}
}
if (i>=1){
int num3 = Integer.parseInt(numOrStr.charAt(i) + "")+ 1;
int num4 = Integer.parseInt(numOrStr.charAt(i - 1) + "");
if (num3 == num4) {
count2 += 1;
if (count2 >= 2){
return true;
}
}
}
int num5 = Integer.parseInt(numOrStr.charAt(i) + "");
int num6 = Integer.parseInt(numOrStr.charAt(i - 1) + "");
if (num5 == num6){
count3 += 1;
if (count3 >= 2){
return true;
}
}
}
}
tag = Character.isDigit(numOrStr.charAt(i));
}
return false;
}
那如果只是数字不能相连呢
追答数字就很简单了呀 创建一个数组[0,1,2,3,4,5,6,7,8,9],用第一种方法逐个比较就行了
前面的条件只是要求必须有,但比如Test123456!就可以通过,很明显123456不符合第四条要求
追答这种@Ab123test就不行?
追问对,这种就不可以,不能连续
追答// 不能是连续的数字--递增(如:123456、12345678)连续数字返回true
public static boolean isOrderNumeric(String numOrStr) {
boolean flag = true;// 如果全是连续数字返回true
boolean isNumeric = true;// 如果全是数字返回true
for (int i = 0; i 0) {// 判断如123456
int num = Integer.parseInt(numOrStr.charAt(i) + "");
int num_ = Integer.parseInt(numOrStr.charAt(i - 1) + "") + 1;
if (num != num_) {
flag = false;
break;
}
}
}
} else {
flag = false;
}
return flag;
}
大哥,你这个方法只能判断纯数字的密码啊
本回答被提问者采纳java密码复杂度校验
r,t,y,u,i,o,p]为一组,比如你的密码包含wert四个字母,那你可以把这四个字母拆开,先使用w从数组中开始遍历,发现w与数组中第二个元素相等,那么再取密码的第二个字母w与数组中的第三个元素比较,如果相等再比较下一个,
JavaMD5和SHA256等常用加密算法
我做过的几个项目中经常见到MD5用在加密上的场景。比如对密码的加密,生成一个密码后,使用MD5生成一个128位字符串保存在数据库中,用户输入密码后也先生成MD5串,再去数据库里比较。因此我们在找回密码时是无法得到原来的密码的,因为明文密码根本不会被保存。SHA系列安全散列算法(英语:SecureHashAlgorit...
java ecc加密
ecc是椭圆曲线密码,利用椭圆曲线来实现的密码技术的统称,java中ecc加密通过使用JPBC库调用ECC椭圆曲线加解密算法,能够编写简单的实验代码进行正确的ECC加密和解密。为什么使用椭圆曲线加密算法?RSA的解决分解整数问题需要亚指数时间复杂度的算法,而目前已知计算椭圆曲线离散对数问题(ECDLP)的最好方法都需要全...
使用java做一个加密和隐藏文件的软件,具体需要怎么做求指导
就加密我说说我的想法吧,首先需要一个加密的算法。这个算法需要满足:算法可逆,双向计算复杂度(时间\/空间)低,安全程度高,可靠性高。另外可以考虑并行化来增加性能,因为现在的文件系统大多比较大,管理的东西都不小。如果能找到这样一个算法,可以对于文件使用二进制的读写(Binary I\/O),然后每读...
计算机考研复试考什么
计算机考研复试的内容因学校和专业而异,通常包括以下几个方面:1. 专业基础知识:包括数据结构、算法与计算复杂度分析、操作系统、计算机组成原理、计算机网络等。2. 编程语言及算法:可能会要求你编写代码或解决一些算法问题,如C\/C++、Java、Python等。3. 计算机系统知识:包括计算机硬件和软件的基本组成...
快速springboot框架?
BootDo是高效率,低封稿数装,面向学习型,面向微服的开源JavaEE开发框架。 BootDo是在SpringBoot基础上搭建的一个Java基础开发平台,MyBatis为数据访问层,ApacheShiro为权限授权层,Ehcahe对常用数据进行缓存。 BootDo主要定位于后台管理系统学习交流,已内置后台管理系统的基础功能和高效的代码生成工具,包括:系统权限组件、数据...
springboot框架?
再次运行,在不提交用户名和密码的情况下,会随机的提示用户名或密码验证失败的提示文本中的某1条。 在Validation框架中,还有其它许多注解,用于进行不同格式的验证,例如: 以上注解,包括`@NotNull`是允许叠加使用的,即允许在同一个参数属性上添加多个注解! 以上注解均可以配置`message`属性,用于指定验证失败的提示文本...
密码技术(十一)之密钥
Diffie-Hellman密钥交换是利用了“离散对数问题”的复杂度来实现密钥的安全交换的,如果将“离散对数问题”改为“椭圆曲线上离散对数问题”,这样的算法就称为 椭圆曲线Diffie-Hellman 密钥交换。 椭圆曲线Diffie-Hellman密钥交换在总体流程上是不变的,只是所利用的数学问题不同而已。椭圆曲线Diffie-Hellman密钥交换...
密文是什么 具体给我讲解一下
公钥密码掀起了一场革命,对信息安全有三方面的贡献:首次从计算复杂性上刻画了密码算法的强度,突破了Shannon仅关心理论强度的局限性;他将传统密码算法中两个密钥管理中的保密性要求,转换为保护其中一格的保密性及另一格的完整性的要求;它将传统密码算法中密钥归属从通信两方变为一个单独的用户,从而使密钥的管理复杂度...
【kerberos】Kerberos安装使用详解及遇到的问题
名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。 max_renewable_life = 7d 涉及到是否能进行ticket的renwe必须配置。 master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外...