gpt4 book ai didi

java - 在具有最低特殊字符要求的 Java 中生成安全随 secret 码

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:03:00 27 4
gpt4 key购买 nike

如何在Java中创建一个满足系统长度和字符集要求的随 secret 码?

我必须创建一个长度为 10-14 个字符且至少包含一个大写字母、一个小写字母和一个特殊字符的随 secret 码。不幸的是,一些特殊字符特殊而无法使用,所以我不能只使用打印的 ASCII。

本网站上的许多示例生成的随 secret 码或 session key 在字符中没有足够的熵,或者在业务环境中没有像上面给出的那样的现实要求,所以我问更尖锐的问题以获得更好的答案.

我的字符集,标准美式键盘上除空格外的每个特殊字符:

A-Z
a-z
0-9
~`!@#$%^&*()-_=+[{]}\|;:'",<.>/?

最佳答案

我建议使用 apache commons RandomStringUtils。使用已经完成的事情。

String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~`!@#$%^&*()-_=+[{]}\\|;:\'\",<.>/?";
String pwd = RandomStringUtils.random( 15, characters );
System.out.println( pwd );

如果你使用的是maven

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>

否则下载jar

更新具有安全随机性的版本。所以剩下的所需字符的问题可以像评论中那样解决,分别生成所需的部分和正常的部分。然后随机加入他们。

char[] possibleCharacters = (new String("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~`!@#$%^&*()-_=+[{]}\\|;:\'\",<.>/?")).toCharArray();
String randomStr = RandomStringUtils.random( randomStrLength, 0, possibleCharacters.length-1, false, false, possibleCharacters, new SecureRandom() );
System.out.println( randomStr );

关于java - 在具有最低特殊字符要求的 Java 中生成安全随 secret 码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31260512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com