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

2024-03-27

如何在Java中创建一个符合系统长度和字符集要求的随机密码?

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

该网站上的许多示例都会生成随机密码或会话密钥,字符中没有足够的熵,或者在业务环境中没有现实的要求(如上面给出的),因此我提出更尖锐的问题以获得更好的答案。

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

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

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

char[] possibleCharacters = (new String("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~`!@#$%^&*()-_=+[{]}\\|;:\'\",<.>/?")).toCharArray();
String randomStr = RandomStringUtils.random( randomStrLength, 0, possibleCharacters.length-1, false, false, possibleCharacters, new SecureRandom() );
System.out.println( randomStr );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中生成具有最低特殊字符要求的安全随机密码 的相关文章

随机推荐

  • 将委托定义为函数指针

    我正在使用调用非托管函数指针的委托 这会导致垃圾收集器在使用之前对其进行收集 如 MSDN 上的 CallbackOnCollectedDelegate MDA 页面中所述 CallbackOnCollectedDelegate MDA 的
  • 在 WPF (MVVM) 中动态更改窗口的用户控件

    我是新来的WPF我只是用做一个简单的菜单MVVM with bindings and commands但我想我做错了什么 我只想更改所有窗口内容导入新的UserControl我定义了 每次按下菜单按钮时 这意味着我想消失菜单并显示新内容 我
  • mongodb 聚合 $lookup 与查找和填充

    我有一个像这样的视频架构 const VideoSchema new mongoose Schema caption type String trim true maxlength 512 required true owner type
  • 为什么应用程序突然关闭而没有显示任何错误?

    我的应用程序有什么作用 该应用程序正在从照片库中选择一张照片 我的问题是什么 一旦我从图库中选择照片 它就会毫无错误地关闭 我做了什么 我增加了设备的内存 但它不起作用 我把它从项目中取出来 活动运行良好 然后又回到了活动中 主要问题是什么
  • Python Ctypes Null 终止字符串块

    我正在使用 ctypes 实现使用登录创建进程 http msdn microsoft com en us library ms682429 aspx 一切正常 除了我不知道如何处理这一部分 指向新进程的环境块的指针 如果该参数为NULL
  • 如何处理 RxJava 中 Observable 中的 map() 中的异常

    我想做这个 Observable just bitmap map new Func1
  • HttpContext.Current.Request.ServerVariables["HTTP_REFERER"] null

    我正在尝试使用以下代码来获取 global asax session start 中的引用 url HttpContext Current Request ServerVariables HTTP REFERER 我尝试使用Request
  • 将默认 Python 版本从 2.4 更改为 2.6

    我想使用一些需要 Python 的新软件2 6 我们目前都有2 4 and 2 6安装在我们专用的 CentOS 服务器上 如下所示 which python usr local bin python which python2 6 usr
  • Javascript 倒计时每周六上午 11 点

    我有一个请求 要求它看起来与我在这里找到的大多数答案略有不同 我正在寻找一个 Javascript 倒计时时钟 它根据服务器的时钟在每周六上午 11 点重复 但服务器位于 CA 并且时钟需要为 EST 我分叉了另一个时钟作为开始 但是当涉及
  • 方法“train_test_split”中的参数“stratify”(scikit Learn)

    我正在尝试使用train test split来自 scikit Learn 包 但我在参数方面遇到问题stratify 以下是代码 from sklearn import cross validation datasets X iris
  • htmlagilitypack - 删除脚本和样式?

    我使用以下方法从 html 中提取文本 public string getAllText string html string allText try HtmlAgilityPack HtmlDocument document new Ht
  • 在 import 语句之前设置 pythonpath

    我的代码是 import scriptlib abc import scriptlib xyz def foo some operations 但 scriptlib 位于其他目录中 因此我必须将该目录包含在环境变量 PYTHONPATH
  • 运行时检查失败 #0 - ESP 的值未在函数调用中正确保存

    我创建了一个简单的程序 演示了使用多重继承的 Qt 应用程序遇到的运行时错误 继承树如下所示 QGraphicsItem abstract QGraphicsLineItem MyInterface abstract MySubclass
  • jQuery 图像悬停效果

    我正在努力实现这个效果 http stuff maikeldaloo com jq img hover mousescroll swf使用 jQuery 我写了一些代码 但它有错误 移到右下角你就会看到 一探究竟 http stuff ma
  • MySQL 服务器版本,用于在 '('id') 附近使用正确的语法

    当我尝试导入数据库时 出现此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 id 附近使用的正确语法 第 4 行 TYPE MyISAM AUTO INCRMENT 6 DROP TABLE IF E
  • Haskell 中的随机数采样序列

    我需要小列表的高斯随机数进行模拟 所以我尝试了以下操作 import System Random seed 10101 gen mkStdGen seed boxMuller mu sigma r1 r2 mu sigma sqrt 2 l
  • 如何在单击按钮时显示自定义对话框

    我希望我的自定义对话框在单击按钮时加载 但这没有发生 我正在使用此网页上的对话框 http jqueryui com dialog default http jqueryui com dialog default 这是我的代码 functi
  • 导入-CSV GroupBy Sum

    我一直试图从 csv 文件获取有意义的输出 原始输入看起来像这样 Col1 Col2 Col3 Col4 a 2 b z a 2 c x a 1 d y e 1 f s e 2 g t h 1 k r 我正在尝试实现以下输出 不包括 col
  • 根据行内容指定动态生成的表名

    我想设置从 gcs 存储桶中的文件读取数据流管道 然后写入 bigquery 表 需要注意的是 要写入的表应根据从 gcs 文件中读取的行的内容来决定 我的问题是 这可能吗 如果是 有人可以给我任何关于如何实现这一目标的提示吗 此外 必须进
  • 在 Java 中生成具有最低特殊字符要求的安全随机密码

    如何在Java中创建一个符合系统长度和字符集要求的随机密码 我必须创建一个长度为 10 14 个字符的随机密码 并且至少包含一个大写字母 一个小写字母和一个特殊字符 不幸的是 一些特殊字符太特殊而无法使用 所以我不能只使用打印的 ASCII