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

Giá trị entropy
Mức độ mạnh:
Ước tính thời gian bẻ khóa ngoại tuyến (GPU cao tốc)
Ước tính thời gian bẻ khóa trực tuyến (giới hạn tốc độ)
Kết quả kiểm tra
  • Độ 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ấu hình chính sách
Ngăn cách bằng dấu phẩy, không phân biệt chữ hoa chữ thường. Hỗ trợ chuẩn hóa Leet (ví dụ: Pa$$w0rd → password).
Đề xuất tối ưu hóa
Chú ý về quyền riêng tư: Việc phát hiện hoàn toàn được thực hiện trên trình duyệt của bạn, mật khẩu không được tải lên.

Cách sử dụng

Phân tích mật khẩu cục bộ và nhận được các đề xuất tối ưu hóa có thể thực hiện.
1) Nhập hoặc dán mật khẩu; kết quả sẽ được cập nhật ngay lập tức.
2) Điều chỉnh chính sách theo nhu cầu (độ dài tối thiểu/yêu cầu loại ký tự).
3) Thêm các từ yếu phổ biến vào danh sách chặn để hỗ trợ xác định (hỗ trợ chuẩn hóa Leet).
4) Sử dụng nhập/xuất để chia sẻ các thiết lập chính sách.

Đặ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

So sánh mật khẩu

Kết quả so sánh
Độ entropy (A): Độ entropy (B):

Câu hỏi thường gặp

Mật khẩu của tôi có được tải lên không?
Không. Tất cả các phân tích chỉ được thực hiện trong trình duyệt của bạn.
Từ "độ entropy" có nghĩa là gì?
Nói chung là cần bao nhiêu lần thử để đoán đúng. Khi có cấu trúc, độ mạnh thực tế sẽ giảm.
Tại sao điểm số lại giảm?
Các mẫu như chuỗi, ngày tháng hoặc di chuyển bàn phím sẽ làm giảm độ mạnh.

Báo cáo

Báo cáo không chứa văn bản mật khẩu của bạn, chỉ chứa các chỉ số và thiết lập.

Kiến thức liên quan
Độ entropy

Độ 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.

Giải thích các mục phát hiện
  • 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).
Lưu ý về thời gian bẻ khóa

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.

Thực hành tốt nhất
  • Ư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.

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}"),
    }
}
                        

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.