【发布时间】:2017-06-05 02:04:15
【问题描述】:
我遇到了一些类似这样的代码:
function generatePassword() {
let password;
do {
password = generateRandomString();
} while (!checkPasswordComplexity(password));
return password;
}
假设generateRandomString() 返回一个真正随机的所需字符集的字符串,checkPasswordComplexity() 检查密码是否包含一些预定义的最小数量的大写/小写/数字/特殊字符。
基本上它会尝试生成一个随机密码,检查某些复杂性要求,如果检查失败,它会再次尝试。
第一个问题:
这实际上比只从generateRandomString 返回第一个结果更安全吗?
第二个问题:
如果这确实是一种好的做法,是否有更有效(但仍然安全)的方式来直接生成满足复杂性要求的密码?
【问题讨论】: