Проверятель сложности пароля

Проверяйте сложность пароля, энтропию и общие уязвимости. Все проверки выполняются локально в вашем браузере.

Проверка сложности

Энтропия
Сложность:
Приблизительное время взлома оффлайн (с быстрыми 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).
  • Нормализация Leet перед сопоставлением с черным списком (например, 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}"),
    }
}
                        

Примечание: эти библиотеки дают оценку силы и шаблонов, которые могут несколько отличаться от детекторов на этой странице.