<header>
  <h2 class="title">Генерація випадкових паролів</h2>
  <p class="description">Цей приклад використовує crypto.getRandomValues для створення безпечних паролів.</p>
</header>
<main>
  <div class="result">
    <label for="passwordLength">Довжина паролю:</label>
    <input type="number" id="passwordLength" value="12" min="8" max="32">
    <button id="generateBtn">Згенерувати пароль</button>
    <p>Ваш пароль: <span id="passwordDisplay">---</span></p>
  </div>
</main>
body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  box-shadow: 0px 0px 3px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  box-shadow: 0px 0px 3px rgba(118, 118, 118, 1);
}

button {
  padding: 10px 15px;
  background-color: #4CAF50;
  color: white;
  border: none;
  cursor: pointer;
}

button:hover {
  background-color: #45a049;
}
document.getElementById('generateBtn').addEventListener('click', function() {
  // Отримуємо довжину паролю від користувача
  const length = parseInt(document.getElementById('passwordLength').value);

  // Можна налаштувати символи для пароля
  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+';
  
  // Створюємо масив для випадкових значень
  const array = new Uint8Array(length);
  
  // Генеруємо випадкові значення
  crypto.getRandomValues(array);
  
  let password = '';
  
  // Перетворюємо випадкові числа в символи з масиву chars
  array.forEach(byte => {
    password += chars[byte % chars.length]; // вибираємо символ за допомогою залишку
  });
  
  // Відображаємо згенерований пароль на сторінці
  document.getElementById('passwordDisplay').textContent = password;
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.