Детектор складності пароля

Перевіряє складність пароля, ентропію та поширених слабких місць. Усі перевірки виконуються локально у вашому браузері.

Перевірка складності

Ентропія
Складність:
Оцінка часу розкриття офлайн (швидкі GPU)
Оцінка часу розкриття онлайн (з обмеженням швидкості)
Результати перевірки
  • Довжина
  • Малі літери
  • Великі літери
  • Цифри
  • Символи
  • Послідовність
  • Повторення
  • Чорний список
  • Режим клавіатури
  • Дата
  • Періодичність
Налаштування політики
Розділяйте комами, регістр не враховується. Підтримується нормалізація Leet (наприклад, Pa$$w0rd → password).
Поради щодо покращення
Політика конфіденційності: Перевірка проводиться повністю локально у вашому браузері, пароль не надсилається на сервер.

Як користуватися

Аналізуюте пароль локально та отримуєте конкретні поради щодо покращення.
1) Введіть або вставте пароль; результати оновлюватимуться в режимі реального часу.
2) Регулюйте політику за потребою (мінімальна довжина/вимоги до типів символів).
3) Додайте поширені слабкі слова до чорного списку для допомоги у виявленні (підтримує нормалізацію Leet).
4) Використовуйте імпорт/експорт для спільного використання налаштувань політики.

Особливості функцій

  • 100% локальний аналіз, пріоритетний захист конфіденційності.
  • Розширені детектори: рухи по клавіатурі, дати, періодичні повторення, послідовності, повторення тощо.
  • Відбір за чорним списком з нормалізацією Leet (наприклад, Pa$$w0rd → password).
  • Гнучкі політики: мінімальна довжина та вимоги до типів символів.
  • Імпорт/експорт політики у форматі JSON одним клік.
  • Аналіз у детекторах одним клік

Порівняння паролів

Результат порівняння
Ентропія (A): Ентропія (B):

Поширені запитання

Чи будуть мої паролі відправлені на сервер?
Ні. Усі аналізи виконуються лише у вашому браузері.
Що означає «ентропія»?
Загалом це кількість спроб, необхідних для вгадування пароля. При наявності структури справжня сила пароля знижується.
Чому оцінка знизилася?
Послідовності, дати або рухи по клавіатурі знижують силу пароля.

Звіт

Звіт не містить текст вашого пароля, лише показники та налаштування.

Відповідна інформація
Ентропія

Ентропія використовується для оцінки розміру пошукового простору на основі набору символів та довжини. Якщо є структура (шаблон, слово), ефективна ентропія зменшується, навіть якщо початкові біти виглядають високими.

Пояснення до детекторів
  • Послідовні послідовності, наприклад, abcde або 12345.
  • Довге повторення одного символу (наприклад, aaaa).
  • Відповідність до поширених слабких слів/шаблонів у власному чорному списку.
  • Послідовності на клавіатурі або сусідніх клавіш (наприклад, qwerty, asdf).
  • Формат дати (наприклад, YYYYMMDD, dd-mm-yyyy).
  • Повторення підрядків (наприклад, abcabc, 121212).
  • Леет - нормалізація перед перевіркою на відповідність чорному списку (наприклад, Pa$$w0rd → password).
Увага щодо часу розкриття

Час розкриття пароля - це лише приблизна оцінка. Фактичні атаки використовують словники, маски та GPU. Короткі паролі з явною структурою часто набагато слабкіші, ніж їхня зовнішня ентропія.

Найкращі практики
  • Переважно використовуйте довгі випадкові фрази (4 або більше слів) або паролі, згенеровані менеджером паролів.
  • Уникайте персональної інформації, дат та передбачувальної структури.
  • Використовуйте менеджер паролів та, якщо можливо, увімкніть багатофакторну аутентифікацію (MFA).
  • Не використовуйте один пароль для різних сайтів; змінюйте пароль лише у разі виникнення небезпеки.

Як перевірити складність пароля за допомогою мов програмування

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

JavaScript
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
  const res = zxcvbn('P@ssw0rd!');
  console.log(res.score, res.crack_times_display);
</script>
                        
Node.js
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';

const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
                        
PHP
composer require bjeavons/zxcvbn-php
                        
<?php
require __DIR__ . '/vendor/autoload.php';

use ZxcvbnPhp\\Zxcvbn;

$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
                        
Python
pip install zxcvbn
                        
from zxcvbn import zxcvbn

res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
                        
Go
go get github.com/nbutton23/zxcvbn-go
                        
package main

import (
  "fmt"
  zxcvbn "github.com/nbutton23/zxcvbn-go"
)

func main() {
  res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
  fmt.Println(res.Score, res.Guesses)
}
                        
Rust
# Add dependency
cargo add zxcvbn
                        
use zxcvbn::zxcvbn;

fn main() {
    match zxcvbn("P@ssw0rd!", &[]) {
        Ok(estimate) => {
            println!("score: {}", estimate.score()); // 0..4
            if let Some(times) = estimate.crack_times() {
                println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
            }
        }
        Err(err) => eprintln!("zxcvbn error: {err}"),
    }
}
                        

Примітка: ці бібліотеки дають оцінку сили та шаблонів, які можуть трохи відрізнятися від перевірок на цій сторінці.