Bộ kiểm tra mức độ mạnh của mật khẩu
Kiểm tra mức độ mạnh, giá trị entropy và các điểm yếu phổ biến của mật khẩu. Tất cả các phép kiểm tra đều được thực hiện cục bộ trên trình duyệt của bạn.
Kiểm tra mức độ mạnh
- Độ dài
- Chữ thường
- Chữ hoa
- Số
- Ký hiệu
- Dãy
- Lặp lại
- Danh sách chặn
- Chế độ bàn phím
- Ngày tháng
- Chu kỳ
- Có vẻ ổn! Hiện tại không có gợi ý cải thiện nào.
Cách sử dụng
Đặc điểm chức năng
- 100% Phân tích cục bộ, ưu tiên bảo vệ quyền riêng tư.
- Phát hiện nâng cao: Di chuyển bàn phím, ngày tháng, lặp lại theo chu kỳ, trình tự, lặp lại, v.v.
- Trùng khớp danh sách chặn chuẩn hóa Leet (ví dụ: Pa$$w0rd → password).
- Chính sách linh hoạt: Yêu cầu về độ dài tối thiểu và loại ký tự.
- Nhập/xuất chính sách JSON bằng một cú nhấp chuột.
- Phân tích trong bộ phát hiện bằng một cú nhấp chuột
Câu hỏi thường gặp
Độ entropy được sử dụng để ước tính kích thước không gian tìm kiếm dựa trên tập ký tự và độ dài. Nếu có cấu trúc (mẫu, từ), ngay cả khi số bit ban đầu có vẻ cao, độ entropy hiệu quả sẽ giảm.
- Chuỗi tuần tự, ví dụ: abcde hoặc 12345.
- Nhiều ký tự giống nhau lặp lại (ví dụ: aaaa).
- Trùng khớp với các từ/mẫu yếu phổ biến trong danh sách đen tùy chỉnh.
- Chuỗi theo bàn phím hoặc các phím liền kề (ví dụ: qwerty, asdf).
- Định dạng ngày tháng (ví dụ: YYYYMMDD, dd-mm-yyyy).
- Chuỗi con lặp lại (ví dụ: abcabc, 121212).
- Thực hiện chuẩn hóa Leet trước khi so khớp với danh sách đen (ví dụ: Pa$$w0rd → password).
Thời gian bẻ khóa chỉ là ước tính gần đúng. Các cuộc tấn công thực tế sẽ sử dụng từ điển, mặt nạ và GPU. Các mật khẩu ngắn và có cấu trúc rõ ràng thường yếu hơn nhiều so với độ entropy bề ngoài của chúng.
- Ưu tiên sử dụng các cụm từ ngẫu nhiên dài (trên 4 từ) hoặc mật khẩu được tạo bởi trình quản lý mật khẩu.
- Tránh sử dụng thông tin cá nhân, ngày tháng và cấu trúc dễ đoán.
- Sử dụng trình quản lý mật khẩu và bật xác thực đa yếu tố (MFA) nếu có thể.
- Không sử dụng lại mật khẩu; chỉ thay đổi khi mật khẩu bị rò rỉ.
Cách kiểm tra mức độ mạnh của mật khẩu thông qua ngôn ngữ lập trình
Dưới đây là ví dụ tối thiểu sử dụng thư viện thành thạo của cộng đồng, bạn có thể lựa chọn theo ngôn ngữ lập trình của mình.
<!-- 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}"),
}
}
Chú ý: Các thư viện này đưa ra ước tính về độ mạnh và mẫu, có thể có sự khác biệt nhỏ so với các mục phát hiện trên trang này.