Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас

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

Створити надійний випадковий пароль

Дані не залишають ваш браузер

Цей інструмент повністю працює на вашому пристрої: обчислення виконує JavaScript у вкладці. Ми не надсилаємо введений текст на сервер, не зберігаємо і не логуємо його. Можете сміливо працювати з робочими даними - і навіть відключити інтернет після завантаження сторінки.

Поділитись

Що робить пароль надійним

Довжина, а не екзотичні символи. Пароль із 20 малих літер стійкіший за 8 символів із усіма можливими спецзнаками - і його значно легше набрати.

Друга умова - випадковість. Пароль, вигаданий людиною, передбачуваний: заміни a на @ та дописаний рік давно є у словниках для перебору.

Звідки береться випадковість тут

З crypto.getRandomValues() - криптографічно стійкого джерела браузера. Не з Math.random(), який швидкий, але передбачуваний і для паролів непридатний.

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

З алфавіту навмисно прибрані схожі символи - 0, O, 1, l, I. Пароль інколи доводиться диктувати або переписувати з екрана.

Скільки це в бітах

Ентропія рахується як log2(розмір алфавіту) × довжина:

Пароль Ентропія
8 символів, лише малі літери ~37 біт
12 символів, літери + цифри ~62 біти
20 символів, повний набір ~120 біт

Орієнтир: менше 80 біт - слабко для чогось важливого, понад 100 - надійно на осяжне майбутнє.

Практичні поради

Різний пароль для кожного сервісу. Найпоширеніший спосіб втратити акаунт - не злом сайту, а витік бази з іншого сайту, де був той самий пароль.

Менеджер паролів замість запам'ятовування. Тоді довжина 30+ нічого не коштує.

Двофакторна автентифікація важливіша за складність пароля. Навіть скомпрометований пароль без другого фактора марний. А зберігати пароль треба хешем - див. bcrypt.

У Laravel

// Генерація випадкового рядка - теж на криптографічному джерелі
Str::random(32);
Str::password(20);   // з літерами, цифрами та символами
// Валідація сили пароля при реєстрації
use Illuminate\Validation\Rules\Password;

$request->validate([
    'password' => ['required', 'confirmed', Password::min(12)
        ->letters()
        ->numbers()
        ->uncompromised()],   // перевірка за базою витоків haveibeenpwned
]);

Правило uncompromised() варте окремої уваги: воно перевіряє пароль за базою реальних витоків, не надсилаючи сам пароль - лише перші п'ять символів його SHA-1.

Згенеровані вище паролі не залишають ваш браузер і ніде не зберігаються - оновіть сторінку, і вони зникнуть назавжди.