|
@@ -1,5 +1,7 @@
|
|
package com.ruoyi.common.utils;
|
|
package com.ruoyi.common.utils;
|
|
|
|
|
|
|
|
+import java.util.Random;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @Author: tjf
|
|
* @Author: tjf
|
|
* @Date: 2022/10/10 9:24
|
|
* @Date: 2022/10/10 9:24
|
|
@@ -10,19 +12,19 @@ public class PwdCheckUtil {
|
|
public static String SPECIAL_CHAR = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
|
|
public static String SPECIAL_CHAR = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @brief 检测密码中字符长度
|
|
|
|
|
|
+ * @return 符合长度要求 返回true
|
|
|
|
+ * @brief 检测密码中字符长度
|
|
* @param[in] password 密码字符串
|
|
* @param[in] password 密码字符串
|
|
- * @return 符合长度要求 返回true
|
|
|
|
*/
|
|
*/
|
|
public static boolean checkPasswordLength(String password, String minNum, String maxNum) {
|
|
public static boolean checkPasswordLength(String password, String minNum, String maxNum) {
|
|
- boolean flag =false;
|
|
|
|
- if (StringUtils.isBlank(maxNum)) {
|
|
|
|
- minNum = StringUtils.isBlank(minNum) ? "0":minNum;
|
|
|
|
|
|
+ boolean flag = false;
|
|
|
|
+ if (StringUtils.isBlank(maxNum)) {
|
|
|
|
+ minNum = StringUtils.isBlank(minNum) ? "0" : minNum;
|
|
if (password.length() >= Integer.parseInt(minNum)) {
|
|
if (password.length() >= Integer.parseInt(minNum)) {
|
|
flag = true;
|
|
flag = true;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- minNum = StringUtils.isBlank(minNum) ? "0":minNum;
|
|
|
|
|
|
+ minNum = StringUtils.isBlank(minNum) ? "0" : minNum;
|
|
if (password.length() >= Integer.parseInt(minNum) &&
|
|
if (password.length() >= Integer.parseInt(minNum) &&
|
|
password.length() <= Integer.parseInt(maxNum)) {
|
|
password.length() <= Integer.parseInt(maxNum)) {
|
|
flag = true;
|
|
flag = true;
|
|
@@ -32,9 +34,9 @@ public class PwdCheckUtil {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @brief 检测密码中是否包含数字
|
|
|
|
|
|
+ * @return 包含数字 返回true
|
|
|
|
+ * @brief 检测密码中是否包含数字
|
|
* @param[in] password 密码字符串
|
|
* @param[in] password 密码字符串
|
|
- * @return 包含数字 返回true
|
|
|
|
*/
|
|
*/
|
|
public static boolean checkContainDigit(String password) {
|
|
public static boolean checkContainDigit(String password) {
|
|
char[] chPass = password.toCharArray();
|
|
char[] chPass = password.toCharArray();
|
|
@@ -47,9 +49,9 @@ public class PwdCheckUtil {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @brief 检测密码中是否包含字母(不区分大小写)
|
|
|
|
|
|
+ * @return 包含字母 返回true
|
|
|
|
+ * @brief 检测密码中是否包含字母(不区分大小写)
|
|
* @param[in] password 密码字符串
|
|
* @param[in] password 密码字符串
|
|
- * @return 包含字母 返回true
|
|
|
|
*/
|
|
*/
|
|
public static boolean checkContainCase(String password) {
|
|
public static boolean checkContainCase(String password) {
|
|
char[] chPass = password.toCharArray();
|
|
char[] chPass = password.toCharArray();
|
|
@@ -63,9 +65,9 @@ public class PwdCheckUtil {
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @brief 检测密码中是否包含小写字母
|
|
|
|
|
|
+ * @return 包含小写字母 返回true
|
|
|
|
+ * @brief 检测密码中是否包含小写字母
|
|
* @param[in] password 密码字符串
|
|
* @param[in] password 密码字符串
|
|
- * @return 包含小写字母 返回true
|
|
|
|
*/
|
|
*/
|
|
public static boolean checkContainLowerCase(String password) {
|
|
public static boolean checkContainLowerCase(String password) {
|
|
char[] chPass = password.toCharArray();
|
|
char[] chPass = password.toCharArray();
|
|
@@ -79,9 +81,9 @@ public class PwdCheckUtil {
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @brief 检测密码中是否包含大写字母
|
|
|
|
|
|
+ * @return 包含大写字母 返回true
|
|
|
|
+ * @brief 检测密码中是否包含大写字母
|
|
* @param[in] password 密码字符串
|
|
* @param[in] password 密码字符串
|
|
- * @return 包含大写字母 返回true
|
|
|
|
*/
|
|
*/
|
|
public static boolean checkContainUpperCase(String password) {
|
|
public static boolean checkContainUpperCase(String password) {
|
|
char[] chPass = password.toCharArray();
|
|
char[] chPass = password.toCharArray();
|
|
@@ -95,9 +97,9 @@ public class PwdCheckUtil {
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @brief 检测密码中是否包含特殊符号
|
|
|
|
|
|
+ * @return 包含特殊符号 返回true
|
|
|
|
+ * @brief 检测密码中是否包含特殊符号
|
|
* @param[in] password 密码字符串
|
|
* @param[in] password 密码字符串
|
|
- * @return 包含特殊符号 返回true
|
|
|
|
*/
|
|
*/
|
|
public static boolean checkContainSpecialChar(String password) {
|
|
public static boolean checkContainSpecialChar(String password) {
|
|
char[] chPass = password.toCharArray();
|
|
char[] chPass = password.toCharArray();
|
|
@@ -108,4 +110,65 @@ public class PwdCheckUtil {
|
|
}
|
|
}
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ *
|
|
|
|
+ * * 运行: java RandomStr 4 (生成长度为4的字符串)
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ int len = 8;
|
|
|
|
+ System.out.println(randomStr(len));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 返回随机字符串,同时包含数字、大小写字母
|
|
|
|
+ *
|
|
|
|
+ * @param len 字符串长度,不能小于3
|
|
|
|
+ * @return String 随机字符串
|
|
|
|
+ */
|
|
|
|
+ public static String randomStr(int len) {
|
|
|
|
+ if (len < 3) {
|
|
|
|
+ throw new IllegalArgumentException("字符串长度不能小于3");
|
|
|
|
+ }
|
|
|
|
+ Random random = new Random();
|
|
|
|
+ //数组,用于存放随机字符
|
|
|
|
+ char[] chArr = new char[len];
|
|
|
|
+ //为了保证必须包含数字、大小写字母
|
|
|
|
+ chArr[0] = (char) ('0' + StdRandom.uniform(0, 10));
|
|
|
|
+ chArr[1] = (char) ('A' + StdRandom.uniform(0, 26));
|
|
|
|
+ chArr[2] = (char) ('a' + StdRandom.uniform(0, 26));
|
|
|
|
+ //"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
|
|
|
|
+ char[] chars = {'@', '!', '%', '$', '*', '?', '&','.','|','#','+','-',':',';','='};
|
|
|
|
+ int index = random.nextInt(15);
|
|
|
|
+ chArr[3] = chars[index];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ char[] codes = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
|
|
|
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
|
|
|
|
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
|
|
|
+ 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
|
|
|
|
+ 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
|
|
|
|
+ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
|
|
|
|
+ 'y', 'z','@', '!', '%', '$', '*', '?', '&','.','|','#','+','-',':',';','='};
|
|
|
|
+ //charArr[3..len-1]随机生成codes中的字符
|
|
|
|
+ for (int i = 4; i < len; i++) {
|
|
|
|
+ chArr[i] = codes[StdRandom.uniform(0, codes.length)];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //将数组chArr随机排序
|
|
|
|
+ for (int i = 0; i < len; i++) {
|
|
|
|
+ int r = i + StdRandom.uniform(len - i);
|
|
|
|
+ char temp = chArr[i];
|
|
|
|
+ chArr[i] = chArr[r];
|
|
|
|
+ chArr[r] = temp;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return new String(chArr);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|