ToolsOhの密码生成器(KT:java、zxcvbn、passay)

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.

END

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值