我正在做一个编码训练营,我们的目标是设置一个密码生成器,用户可以选择哪种类型的字符(小写、大写、数字和特殊字符)和长度,并为他们提供一个随机的安全密码。
除了作业的一个重要部分,即生成的密码必须包含用户选择的每个字符外,我能够使它的所有方面都起作用。它目前是随机抓取的,因此如果您选择所有 4 个条件,它们将全部出现并不总是保证。我如何验证这一点?
const lowCaseArr = "abcdefghijklmnopqrstuvwxyz";
const upCaseArr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numeralArr = "1234567890";
const specialArr = "!@#$%^&*";
function getLength() {
while (true) {
var userLength = parseInt(prompt("How many numbers, between 8 and 128, would you like to use? (Enter 0 to cancel)"));
if (userLength == 0) {
return 0;
} else if (userLength > 128 || userLength < 8) {
alert("You must enter a number between 8-128.");
} else if (userLength <= 128 && userLength >= 8) {
alert("Great! Your have selected a password with " + userLength + " characters.");
return userLength;
}
}
}
function randChar(passwordCharacters) {
return passwordCharacters.charAt(Math.floor(Math.random() * passwordCharacters.length));
}
function makePassword(userLength, passwordCharacters) {
var securePassword = "";
for (i = 0; i < userLength; i++) {
securePassword += randChar(passwordCharacters);
}
return securePassword;
}
function generatePassword() {
var userLength = getLength();
if (userLength == 0) {
return "User Cancelled Request";
}
var passwordCharacters = "";
var askLowerCase = confirm("Would you like to include lower case characters? (a, b, c)");
if (askLowerCase !== true) {
alert("Got it. No lower case characters will be included.");
} else {
alert("Great! Your password will include lower case characters!");
passwordCharacters += lowCaseArr;
}