Проверятель сложности пароля
Проверяйте сложность пароля, энтропию и общие уязвимости. Все проверки выполняются локально в вашем браузере.
Проверка сложности
- Длина
- Маленькие буквы
- Заглавные буквы
- Цифры
- Символы
- Последовательность
- Повторы
- Черный список
- Режим клавиатуры
- Дата
- Периодичность
- Пароль выглядит хорошо! Нет подсказок для улучшения.
Способ использования
Особенности функционала
- 100% локальный анализ, с приоритетом на защиту конфиденциальности.
- Расширенные детекторы: клавиатурные комбинации, даты, периодические повторения, последовательности, повторения и т.д.
- Сопоставление черного списка с нормализацией Leet (например, Pa$$w0rd → password).
- Гибкие политики: минимальная длина и требования к типам символов.
- Одно кликом импортировать/экспортировать политику в формате JSON.
- Одно кликом провести анализ в детекторе
Часто задаваемые вопросы
Энтропия используется для оценки размера поискового пространства на основе набора символов и длины. Если есть структура (шаблоны, слова), эффективная энтропия снижается, даже если исходное количество бит кажется большим.
- Последовательные последовательности, например, abcde или 12345.
- Длинные повторения одного и того же символа (например, aaaa).
- Совпадение с часто используемыми слабыми словами/шаблонами в пользовательском черном списке.
- Последовательности на клавиатуре или соседние клавиши (например, qwerty, asdf).
- Стиль дат (например, YYYYMMDD, dd-mm-yyyy).
- Повторяющиеся подстроки (например, abcabc, 121212).
- Нормализация Leet перед сопоставлением с черным списком (например, Pa$$w0rd → password).
Время взлома - только грубая оценка. Реальные атаки используют словари, маски и GPU. Короткие и имеющие явную структуру пароли часто намного слабее, чем их визуальная энтропия.
- Приоритетно используйте длинные случайные фразы (более 4 слов) или пароли, сгенерированные менеджером паролей.
- Избегайте персональной информации, дат и предсказуемых структур.
- Используйте менеджер паролей и, по возможности, включите многофакторную аутентификацию (MFA).
- Не повторяйте пароли; меняйте их только в случае утечки.
Как проверить сложность пароля с помощью языков программирования
Ниже приведен минимальный пример использования готовых библиотек сообщества. Выберите подходящую для вашего стека технологий.
<!-- 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>
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
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'];
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
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)
}
# 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}"),
}
}
Примечание: эти библиотеки дают оценку силы и шаблонов, которые могут несколько отличаться от детекторов на этой странице.