在Linux上我习惯使用mkpasswd
来生成随机密码,但在OS X上我没有这个命令。我没有每次都搜索到我的vps,而是想用Java重新实现它。我所做的是随机选择4个小写字母,2个大写字母,2个符号(/。等)和2个数字。然后我创建了一个矢量并随机播放。
你认为这是足够好的随机化吗?
答案 0 :(得分:3)
如果您使用java.security.SecureRandom而不是java.util.Random,那么它可能是安全的。 SecureRandom提供“加密强伪随机数生成器(PRNG)”。即它确保种子不易被猜测,并且生成的数字具有高熵。
答案 1 :(得分:1)
此类的实例用于生成伪随机数流。该类使用48位种子,使用线性同余公式进行修改。 (参见Donald Knuth,“计算机程序设计的艺术”,第2卷,第3.2.1节。)
Random类实现的算法使用受保护的实用程序方法,该方法在每次调用时最多可提供32个伪随机生成的位。
修改强>
回应评论:
/**
* Creates a new random number generator. This constructor sets
* the seed of the random number generator to a value very likely
* to be distinct from any other invocation of this constructor.
*/
public Random() {
this(++seedUniquifier + System.nanoTime());
}
private static volatile long seedUniquifier = 8682522807148012L;
答案 2 :(得分:1)
Mac Ports中提供了类似的pwgen
命令。
答案 3 :(得分:0)
取决于熵的来源。使用您的特定语言附带的rand()或类似函数可能不安全。
在OSX上你可以使用/ dev / random。
答案 4 :(得分:0)
可能没问题,但是你应该在密码长度上允许一些随机化。
如果你的程序变得流行,那么密码长度就是公众所知的弱点。同时随机化小写的确切比例:大写:符号:数字一点。
答案 5 :(得分:0)
为什么不在OS X主机上编译mkpasswd?