تستکننده قدرت رمز عبور
تعیین قدرت رمز عبور، مقدار آنتروپی و نقاط ضعف رایج. تمام آزمایشها در مرورگر شما محلی انجام میشوند.
تست قدرت
آنتروپی
قدرت:
تخمین زمان شکستن آفلاین (GPU با سرعت بالا)
تخمین زمان شکستن آنلاین (با محدودیت سرعت)
نتایج تست
- طول
- حروف کوچک
- حروف بزرگ
- اعداد
- نمادها
- دنباله
- تکرار
- لیست سیاه
- مد کлавیاتوری
- تاریخ
- دورهای
پیکربندی استراتژی
با کاما جدا کنید، بدون توجه به حروف بزرگ و کوچک. از نرمالیزه کردن Leet پشتیبانی میکند (مانند Pa$$w0rd → password).
پیشنهادهای بهبود
- به نظر خوب میآید! در حال حاضر هیچ نشانهای برای بهبود وجود ندارد.
توضیح حریم خصوصی: تشخیص کاملاً در مرورگر شما محلی انجام میشود و کلمه عبور آپلود نمیشود.
نحوه استفاده
تحلیل محلی رمز عبور و دریافت پیشنهادهای عملی برای بهبود آن.
1) رمز عبور را وارد یا چسبانید؛ نتایج به صورت لحظهای بروزرسانی میشوند.
2) استراتژی را بر حسب نیاز تنظیم کنید (حداقل طول / الزامات نوع کاراکتر).
3) کلمات ضعیف رایج را به لیست سیاه اضافه کنید تا در تشخیص کمک کنند (پشتیبانی از نرمالیزه کردن لیت).
4) از امکانات имپورت / اکسپورت برای اشتراک تنظیمات استراتژی استفاده کنید.
ویژگیهای خاص
- 100% تحلیل محلی، حفاظت از حریم شخصی را اولویت میدهد.
- تشخیص پیشرفته: حرکت صفحه کلید، تاریخ، تکرار دورهای، ترتیب، تکرار و غیره.
- مطابقت لیست سیاه نرمالیزه شده Leet (مانند Pa$$w0rd → password).
- سیاست انعطافپذیر: حداقل طول و الزامات نوع کاراکتر.
- درونریزی/خارجریزی یک کلیک پالیسی JSON.
- تحلیل یک کلیک در تشخیصگر
سوالات متداول
آیا رمز عبورم آپلود میشود؟
خیر. همه تحلیلها فقط در مرورگر شما انجام میشوند.
مقدار "اندازه آنتروپی" چیست؟
به طور تقریبی نشان میدهد که چند بار تلاش لازم است تا رمز را حدس بزنید. وقتی ساختاری وجود دارد، قدرت واقعی کاهش مییابد.
چرا امتیاز کاهش یافت؟
الگوهایی مانند دنباله، تاریخ یا حرکت صفحه کلید قدرت را کاهش میدهند.
اطلاعات مربوطه
اندازه گیری آنتروپی
آنتروپی برای تخمین اندازه فضای جستجو بر اساس مجموعه کاراکترها و طول استفاده میشود. اگر ساختاری (الگو، کلمه) وجود داشته باشد، حتی اگر بیتهای اولیه بسیار بالا به نظر برسند، آنتروپی موثر کاهش مییابد.
توضیح موارد تشخیص
- دنبالههای ترتیبی، مانند abcde یا ۱۲۳۴۵.
- تکرار طولانی یک کاراکتر (مانند aaaa).
- مطابقت با کلمههای ضعیف یا الگوهای رایج در لیست سیاه سفارشی.
- دنبالههای مربوط به حرکت روی صفحه کلید یا کلیدهای مجاور (مانند qwerty، asdf).
- الگوهای تاریخ (مانند YYYYMMDD، dd-mm-yyyy).
- زیررشتههای تکراری (مانند abcabc، ۱۲۱۲۱۲).
- استفاده از نرمالیزه کردن Leet قبل از مطابقت با لیست سیاه (مانند Pa$$w0rd → password).
توجه در مورد زمان شکستن
زمان شکستن تنها یک تخمین تقریبی است. حملههای واقعی از دیکشنریها، ماسکها و GPU استفاده میکنند. کلمههای عبور کوتاه و با ساختار مشخص اغلب بسیار ضعیفتر از آنتروپی ظاهری خود هستند.
بهترین روشها
- ترجیح دهید از عبارتهای عبور تصادفی طولانی (بیش از ۴ کلمه) یا کلمههای عبور تولید شده توسط مدیر کلمه عبور استفاده کنید.
- اطلاعات شخصی، تاریخها و ساختارهای قابل پیشبینی را از بین ببرید.
- از مدیر کلمه عبور استفاده کنید و تا جایی که ممکن است احراز هویت چند عاملی (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}"),
}
}
توضیح: این کتابخانهها برآورد قدرت و الگو را ارائه میدهند که ممکن است کمی با موارد تشخیص این صفحه تفاوت داشته باشند.