❑ToolsOh!の【密码生成器】工具的功能
所在位置:ToolsOh/生活工具/密码生成器
主要技术:java、zxcvbn、passay
1、功能简介
随机生成可靠、随机且唯一的密码
2、输入、输出
略
3、程序(算法)说明
maven代码
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.6.1</version>
</dependency>
java代码
import org.apache.commons.lang3.StringUtils;
import org.passay.*;
import org.springframework.stereotype.Component;
import java.util.ArrayList;import java.util.List;
import static org.passay.IllegalCharacterRule.ERROR_CODE;
@Component
public class PasswordGeneratorHelper {
/**
*
* @param length 密码长度
* @param lowerCaseFlag 是否包含小写字母
* @param upperCaseFlag 是否包含大写字母
* @param digitFlag 是否包含数字
* @param special 指定其他特殊字符(字符串)
* @return
*/
public String generatePassayPassword(int length, boolean lowerCaseFlag, boolean upperCaseFlag, boolean digitFlag, String special) {
PasswordGenerator passwordGenerator = new PasswordGenerator();
List<CharacterRule> rules = new ArrayList<>();
if (lowerCaseFlag) {
CharacterData lowerCaseChars = EnglishCharacterData.LowerCase;
CharacterRule lowerCaseRule = new CharacterRule(lowerCaseChars);
// 至少有1个小写字母
lowerCaseRule.setNumberOfCharacters(1);
rules.add(lowerCaseRule);
}
if (upperCaseFlag) {
CharacterData upperCaseChars = EnglishCharacterData.UpperCase;
CharacterRule upperCaseRule = new CharacterRule(upperCaseChars);
upperCaseRule.setNumberOfCharacters(1);
rules.add(upperCaseRule);
}
if (digitFlag) {
CharacterData digitChars = EnglishCharacterData.Digit;
CharacterRule digitRule = new CharacterRule(digitChars);
digitRule.setNumberOfCharacters(1);
rules.add(digitRule);
}
if (StringUtils.isNotBlank(special)) {
CharacterData specialChars = new CharacterData() {
public String getErrorCode() {
return ERROR_CODE;
}
public String getCharacters() {
return special;
}
};
CharacterRule splCharRule = new CharacterRule(specialChars);
splCharRule.setNumberOfCharacters(1);
rules.add(splCharRule);
}
String password = passwordGenerator.generatePassword(length, rules);
return password;
}
public static void main(String[] args) {
String password = new PasswordGeneratorHelper().generatePassayPassword(16,true,true,true,"!@#$%^&");
System.out.println(password);
}
}
测试结果
WNE&s&Pj^Rj55Zg%
4、关键业务流程
略
❑用户界面
1、成品演示
https://www.toolsoh.com/p/t/life/mimashengchengqi-passwordgenerator.html
2、界面展示
❑致谢开源
- 开源项目作者: vt-middleware
- 开源项目名称: passay
- 开源项目地址: https://github.com/vt-middleware/passay 去star
- 开源项目描述: Java的密码策略实施。Password policy enforcement for Java.
- 开源项目作者: nulab
- 开源项目名称: zxcvbn4j
- 开源项目地址: https://github.com/nulab/zxcvbn4j 去star
- 开源项目描述: 这是zxcvbn的一个java端口,是一个JavaScript密码强度生成器。This is a java port of zxcvbn, which is a JavaScript password strength generator.