Генератор случайных паролей JavaScript - PullRequest
0 голосов
/ 04 апреля 2020

Я использую оконные подсказки и window.confirm, чтобы спросить пользователя, хотят ли они использовать определенные символы в своем пароле. (Я знаю, что могу сделать флажки с некоторыми HTML, но это должно быть JS). Как передать подтверждающие ответы в функцию, а затем использовать Math.floor(Math.random() * length)?

const key_strings = {
    lowercase: 'abcdefghijklmnopqrstuvwxyz',
    uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    number: '0123456789',
    symbol: " !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~",
};

function generatePassword() {
  passwordCharSet = "";

  var length = window.prompt("Enter a number from 8 to 128 for password length.");

  var lowercase = window.confirm("Would you like to use lowercase letters?");
    if (lowercase == true) {
        passwordCharSet += lowercase;
    };

  var uppercase = window.confirm("Would you like to use uppercase letters?");
    if (uppercase == true) {
        passwordCharSet += uppercase;
    };

  var symbols = window.confirm("Would you like to use symbols?");
    if (symbols == true) {
        passwordCharSet += symbols;
    };

  var numbers = window.confirm("Would you like to use numbers?");
    if (numbers == true) {
        passwordCharSet += numbers;
    };

  for (let i = 0; i < length; i++) {
    _______________ Math.floor(Math.random() * length)
  }
  }

Я не уверен, что еще можно добавить в math.floor.

1 Ответ

2 голосов
/ 04 апреля 2020

Вам нужно объединить свойства от key_string до passwordCharSet, а не ответ на приглашение.

При получении случайного символа необходимо индексировать passwordCharSet и использовать passwordCharSet.length.

В key_strings.symbol вам нужно сбежать " и \.

const key_strings = {
  lowercase: 'abcdefghijklmnopqrstuvwxyz',
  uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
  number: '0123456789',
  symbol: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
};

function generatePassword() {
  var passwordCharSet = "";

  var length = window.prompt("Enter a number from 8 to 128 for password length.");

  var lowercase = window.confirm("Would you like to use lowercase letters?");
  if (lowercase) {
    passwordCharSet += key_strings.lowercase;
  };

  var uppercase = window.confirm("Would you like to use uppercase letters?");
  if (uppercase) {
    passwordCharSet += key_strings.uppercase;
  };

  var symbols = window.confirm("Would you like to use symbols?");
  if (symbols) {
    passwordCharSet += key_strings.symbol;
  };

  var numbers = window.confirm("Would you like to use numbers?");
  if (numbers) {
    passwordCharSet += key_strings.number;
  };
  var password = "";
  for (let i = 0; i < length; i++) {
    password += passwordCharSet[Math.floor(Math.random() * passwordCharSet.length)]
  }
  return password;
}

console.log(generatePassword());
...