1、引用zip4j包
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.2</version>
</dependency>
2、获取所有可能的密码集合
package com.yymagicer.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @ClassName StringUtil
* @Description
* @Author yangxd
* @Date 2021/5/6 16:39
* @Version 1.0
**/
public class StringUtil {
/**
* 数字
*/
public static final String NUMBER = "0123456789";
/**
* 字母
*/
public static final String ALPHABET = "abcdefghijklmnopqrstuvwyxz";
/**
* 符号
*/
public static final String SYMBOL = "~!@#$%^&*()_+[]{};,.<>?-=";
/**
* 获取指定的字符
*
* @param includeNumber 是否包含数字
* @param includeAlphabet 是否包含字母
* @param includeSymbol 是否包含字符
* @param length 字符长度
* @return
*/
public static List<String> getStr(boolean includeNumber, boolean includeAlphabet, boolean includeSymbol, int length) {
List<String> result = new ArrayList<>();
StringBuffer sb = new StringBuffer();
if (includeNumber) {
sb.append(NUMBER);
}
if (includeAlphabet) {
sb.append(ALPHABET);
sb.append(ALPHABET.toUpperCase());
}
if (includeSymbol) {
sb.append(SYMBOL);
}
if (sb.length() <= length) {
result.add(sb.toString());
}
char[] chars = sb.toString().toCharArray();
String[] strings = new String[chars.length];
for (int i = 0; i < chars.length; i++) {
strings[i] = String.valueOf(chars[i]);
}
String[] allLists = getAllLists(strings, length);
return Arrays.asList(allLists);
}
/**
* 获取指定位数的数据集合
*
* @par