一. 随机密码工具类
- 通过静态代码块执行密码所在的范围
SecureRandom
使用比Random
更复杂的算法来生成随机数,
是专门为加密设计的。
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.IntConsumer;
import java.util.stream.IntStream;
public final class PassWorldUtils {
private static final List<Integer> VALID_PWD_CHARS = new ArrayList<>();
static {
IntConsumer intConsumer = VALID_PWD_CHARS::add;
IntStream.rangeClosed('0', '9').forEach(intConsumer);
IntStream.rangeClosed('A', 'Z').forEach(intConsumer);
IntStream.rangeClosed('a', 'z').forEach(intConsumer);
IntStream.rangeClosed('!', '*').forEach(intConsumer);
}
public static String passSecureRandom(Integer passwordLength) {
List<String> passStrList = new ArrayList<>();
new SecureRandom()
.ints(passwordLength, 0, VALID_PWD_CHARS.size())
.map(VALID_PWD_CHARS::get)
.forEach(passInt -> passStrList.add(String.valueOf((char) passInt)));
return String.join("", passStrList);
}
public String passRandom(Integer passwordLength) {
List<String> passStrList = new ArrayList<>();
new Random()
.ints(passwordLength, 0, VALID_PWD_CHARS.size())
.map(VALID_PWD_CHARS::get)
.forEach(passInt -> passStrList.add(String.valueOf((char) passInt)));
return String.join("", passStrList);
}
}
二. 调用
- 通过普通的方式调用
- 通过Function函数式编程的方式调用
import java.util.function.BiFunction;
PassWorldUtils passWorldUtils = new PassWorldUtils();
String randomPassStr1 = passWorldUtils.passRandom(8);
System.out.println(randomPassStr1);
BiFunction<PassWorldUtils, Integer, String> randomPassFunc = PassWorldUtils::passRandom;
String randomPassStr2 = randomPassFunc.apply(new PassWorldUtils(), 8);
System.out.println(randomPassStr2);
import java.util.function.Function;
String secureRandomPassStr1 = PassWorldUtils.passSecureRandom(8);
System.out.println(secureRandomPassStr1);
Function<Integer, String> secureRandomPass = PassWorldUtils::passSecureRandom;
String secureRandomPassStr2 = secureRandomPass.apply(8);
System.out.println(secureRandomPassStr2);