Інструмент генерації та перевірки паролів

Генеруйте надійні паролі та фрази-паролі, підтримує масове створення, унікальність, перевірку міцності та політик, а також надає приклади коду на кількох мовах та корисні знання.

Генератор паролів

Кількість
Вибір груп символів
Порада: виключайте символи, вибираючи групу або клікаючи безпосередньо на символ.
Результат

Тестувальник політики паролів

Результати
  • Довжина
  • Малі літери
  • Великі літери
  • Цифри
  • Символи
  • Послідовності
  • Повторення
  • Чорний список
Усі перевірки виконуються локально у вашому браузері.

Генератор фраз-паролів

Слова вибираються за допомогою криптографічно безпечного генератора (Web Crypto). У демонстраційному словнику обмежена кількість слів через обмеження розміру.

Швидкий посібник з хешування паролів

Argon2id
  • Використовуйте Argon2id із розумними параметрами пам’яті
  • Не менше 2 проходів, пам’ять ≥ 64 МБ (налаштуйте залежно від середовища)
  • Індивідуальний сіл для кожного користувача; опціонально — pepper на рівні додатку
PBKDF2
  • Оберіть SHA-256 або SHA-512, ітерацій ≥ 210 000 (налаштуйте за потребою)
  • Унікальний сіл для кожного хешу; підтримка оновлення параметрів
  • Під час наступного входу перехід на параметри з вищою вартістю
BCrypt
  • Вартість 10–14, залежно від можливостей сервера
  • Уникайте обрізання паролів; хешуйте повний пароль
  • Застосовуйте обмеження та моніторинг до точок автентифікації
Джерело: NIST SP 800-63B, OWASP ASVS. Параметри мають відповідати потужностям обладнання та SLO.

Оцінка складності пароля

Складність приблизно визначається ентропією: entropy = log2(розмір набору символів) × довжина. Більший набір символів та більша довжина підвищують стійкість до підбору.

  • Слабкий: < 50 біт — підходить лише для одноразових/низьковартісних сценаріїв
  • Задовільний: 50–80 біт — прийнятний для низькоризикованих сценаріїв
  • Сильний: 80–110 біт — рекомендована цільова значення за замовчуванням
  • Дуже сильний: > 110 біт — підходить для адміністраторів/критичних облікових записів

Підказка: реальні моделі атак можуть відрізнятися; уникайте повторного використання паролів та увімкніть двофакторну автентифікацію (MFA).

Інструкції з використання

  • Виберіть довжину та набір символів (малі/великі літери/цифри/символи); при необхідності увімкніть «Уникати схожих» та «Вимагати кожен»
  • Для більш детального контролю: виключіть символи/групи символів або виберіть групи символів
  • Натисніть «Згенерувати»; для отримання кількох результатів увімкніть масове створення та скопіюйте всі однією кнопкою
  • Щоб перевірити існуючий пароль — використовуйте «Перевірник політики»; щоб отримати легко запам’ятовуваний пароль — використовуйте «Генератор фраз-паролів»

Функції

  • Криптографічно безпечне джерело випадковості (Web Crypto)
  • Налаштовувані набори символів та групи символів
  • Фільтрація схожих символів та власні виключення
  • Масове створення, гарантія унікальності та статистика видалення дублікатів
  • Оцінка міцності та ентропії
  • Перевірник політики та генератор фраз-паролів
  • Приклади коду на кількох мовах (JS、Python、PHP、Go、Java、C#、Rust)
  • Одноклік-копіювання (один пароль/усі)

Приклади генерації паролів

Надійний (Strong)
Довжина 24, включає великі/малі літери, цифри, символи
Легко запам’ятовуваний (Memorable)
Довжина 16, включає великі/малі літери та цифри, уникання схожих символів

База знань про паролі

1) Потужність пароля та ентропія
  • Ентропія ≈ log2(розмір набору символів) × довжина; довжина зазвичай має більший вплив
  • Рекомендована мета: звичайні облікові записи ≥ 80 біт; облікові записи з високими правами/фінансові ≥ 110 біт
  • Більший набір символів + більша довжина → краща стійкість до підбору
2) Довжина проти складності
  • Сліпий додавання символів менш ефективний, ніж збільшення довжини
  • Уникайте передбачуваних шаблонів (наприклад, завжди «велика перша літера + цифра на кінці!»)
  • Спочатку забезпечте достатню довжину, а потім помірно підвищуйте різноманітність символів
3) Поширені помилки та антишаблони
  • Клавіатурні послідовності (qwerty), повторювані блоки, дати народження/роки — легко вгадуються за правилами
  • "Базовий пароль + суфікс сайту" — це варіаційне повторення, що концентрує ризики та легко піддається вгадуванню
  • Не використовуйте однаковий пароль для кількох сайтів
4) Рекомендації з управління паролями
  • Використовуйте менеджер паролів; унікальні паролі для кожного сайту; увімкніть MFA для важливих облікових записів
  • Не передавайте паролі відкритим текстом через публічні канали; при необхідності використовуйте "звуково зручні" паролі
  • Якщо виявлено витік або повторення — негайно змініть пароль і забезпечте його унікальність
5) Посібник з фраз-паролів (Passphrase)
  • Комбінація з 4–6 слів зазвичай сильна та легко запам'ятовується
  • Змішуйте розділювачі, велику першу літеру та додавайте цифри для підвищення потужності та читабельності
  • Уникайте прямих посилань на популярні фрази, тексти пісень або цитати

Рекомендації з безпеки паролів

Найкращі практики
  • Використовуйте достатню довжину: зазвичай 16+ для звичайних облікових записів, 24+ для критичних
  • Для запам’ятовування використовуйте фрази-паролі; випадкові надійні паролі краще зберігати у менеджері паролів
  • Увімкніть багатофакторну автентифікацію (MFA) там, де це можливо
  • Не повторюйте паролі між різними сайтами — кожен обліковий запис повинен мати унікальний пароль
Ентропія та сила

Ентропія вимірює непередбачуваність на основі довжини та розміру набору символів: чим вища кількість бітів ентропії, тим сильніший пароль.

  • Максимально збільшуйте довжину — це дає найбільшу вигоду
  • При можливості використовуйте різні набори символів
  • Заборона надто великої кількості символів зменшує розмір набору і погіршує безпеку
Політики та зміна паролів
  • Віддавайте перевагу довжині та чорним спискам заборонених/втеклих паролів замість складних правил складання
  • Не вимагайте частого обов’язкового змінювання паролів — змінюйте лише при витіканні або виявленні ризику
  • Використовуйте списки втеклих паролів, щоб заборонити використання поширених або скомпрометованих паролів
Фрази-паролі
  • Використовуйте 4–6 випадкових слів, з’єднаних роздільниками, наприклад: lake-CARROT-planet_7
  • Уникайте цитат, пісень чи інших поширених фраз; випадковість важливіша за «розумність»
  • Для критичних облікових записів рекомендується використовувати менеджер паролів для зберігання справді високо-ентропійних випадкових паролів
Підказки щодо налаштувань генерації
  • "Require each selected set" гарантує, що хоча б один символ з кожної вибраної групи буде присутній
  • "Avoid similar" покращує читабельність, але трохи зменшує розмір набору символів
  • Символи можна обмежити підмножиною, яку підтримує цільова система
Зберігання на сервері
  • Ніколи не зберігайте паролі в відкритому вигляді; використовуйте потужні хеш-функції (Argon2id/PBKDF2/BCrypt) з солями
  • Настройте параметри (пам’ять/час/вартість) правильно; при необхідності використовуйте pepper
  • Обмежте швидкість спроб і моніторьте невдалий доступ; під час атак додавайте CAPTCHA або перевірку пристрою
Багатофакторна автентифікація та відновлення
  • Віддавайте перевагу TOTP/апаратним ключам; уникайте SMS
  • Захищайте процес відновлення: використовуйте багатофакторну або електронну пошту для верифікації, додайте період охолодження
  • Надавайте резервні коди відновлення та закликайте користувачів зберігати їх безпечно
Захист від підбору паролів
  • Використовуйте прогресивне затримування/блокування та рейтинг ризику за IP/пристроєм
  • Налаштуйте WAF/обмеження швидкості для API та форм входу
  • Спостерігайте за атаками типу "credential stuffing" і закликайте користувачів використовувати унікальні паролі
Локальне зберігання та обробка
  • Зберігайте та автоматично заповнюйте паролі за допомогою надійного менеджера паролів
  • Не передавайте паролі в текстових повідомленнях чи електронній пошті відкритим текстом; для команд використовуйте інструменти управління секретами
  • Якщо потрібно записувати паролі вручну — забезпечте фізичну безпеку
Заява: цей інструмент генерує паролі локально у браузері за допомогою Web Crypto; дані не надсилаються на сервер.

Як генерувати паролі через мови програмування

JavaScript(Web Crypto)
function randomPassword(length = 16, sets = {lower:true, upper:true, digits:true, symbols:true}) {
  const pools = {
    lower: 'abcdefghijklmnopqrstuvwxyz',
    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    digits: '0123456789',
    symbols: '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
  };
  let pool = '';
  for (const k of Object.keys(sets)) if (sets[k]) pool += pools[k];
  if (!pool) throw new Error('No charset');
  const bytes = new Uint32Array(length);
  crypto.getRandomValues(bytes);
  let out = '';
  for (let i = 0; i < length; i++) out += pool[bytes[i] % pool.length];
  return out;
}
Python(secrets)
import secrets

def random_password(length=16, lower=True, upper=True, digits=True, symbols=True):
    pools = {
        'lower': 'abcdefghijklmnopqrstuvwxyz',
        'upper': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits': '0123456789',
        'symbols': '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    }
    pool = ''.join(v for k, v in pools.items() if locals()[k])
    if not pool:
        raise ValueError('No charset')
    return ''.join(secrets.choice(pool) for _ in range(length))
PHP(random_int)
function random_password($length = 16, $sets = ['lower'=>true,'upper'=>true,'digits'=>true,'symbols'=>true]) {
    $pools = [
        'lower' => 'abcdefghijklmnopqrstuvwxyz',
        'upper' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits' => '0123456789',
        'symbols' => '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    ];
    $pool = '';
    foreach ($sets as $k => $on) if ($on) $pool .= $pools[$k];
    if ($pool === '') throw new Exception('No charset');
    $out = '';
    for ($i = 0; $i < $length; $i++) {
        $out .= $pool[random_int(0, strlen($pool)-1)];
    }
    return $out;
}
Go(crypto/rand)
package main

import (
  "crypto/rand"
  "math/big"
)

func RandomPassword(length int, pool string) (string, error) {
  out := make([]byte, length)
  for i := 0; i < length; i++ {
    nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(pool))))
    if err != nil { return "", err }
    out[i] = pool[nBig.Int64()]
  }
  return string(out), nil
}
Java(SecureRandom)
import java.security.SecureRandom;

public class Pw {
  static final String POOL = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
  static final SecureRandom SR = new SecureRandom();
  static String randomPassword(int length) {
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
      int idx = SR.nextInt(POOL.length());
      sb.append(POOL.charAt(idx));
    }
    return sb.toString();
  }
}
C#(.NET RandomNumberGenerator)
using System;
using System.Security.Cryptography;

public static class Pw {
  public static string RandomPassword(int length, string pool) {
    using var rng = RandomNumberGenerator.Create();
    var bytes = new byte[length];
    rng.GetBytes(bytes);
    var chars = new char[length];
    for (int i = 0; i < length; i++) {
      chars[i] = pool[bytes[i] % pool.Length];
    }
    return new string(chars);
  }
}
Rust(rand + getrandom)
use rand::rngs::OsRng;
use rand::RngCore;

fn random_password(length: usize, pool: &str) -> String {
    let mut bytes = vec![0u8; length];
    OsRng.fill_bytes(&mut bytes);
    let chars: Vec = pool.chars().collect();
    bytes
        .iter()
        .map(|b| chars[(*b as usize) % chars.len()])
        .collect()
}

fn main() {
    let pool = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
    let pw = random_password(16, pool);
    println!("{}", pw);
}