เครื่องตรวจสอบความแข็งแกร่งของรหัสผ่าน
ตรวจสอบความแข็งแกร่งของรหัสผ่าน ค่าความสุ่มและจุดอ่อนทั่วไป ทุกการตรวจสอบจะทำงานในเบราว์เซอร์ของคุณเอง
การตรวจสอบความแข็งแกร่ง
ค่าความสุ่ม
ความแข็งแกร่ง:
การประมาณเวลาการแตกรหัสแบบออฟไลน์ (GPU สูงความเร็ว)
การประมาณเวลาการแตกรหัสแบบออนไลน์ (มีอัตราเร็วสูงสุด)
ผลการตรวจสอบ
- ความยาว
- ตัวอักษรพิมพ์เล็ก
- ตัวอักษรพิมพ์ใหญ่
- ตัวเลข
- สัญลักษณ์
- ลำดับ
- การซ้ำ
- รายการบล็อก
- โหมดแป้นพิมพ์
- วันที่
- การซ้ำเป็นระยะ
การกำหนดนโยบาย
คั่นด้วยเครื่องหมายจุลภาค ไม่สนใจตัวพิมพ์เล็กหรือใหญ่ รองรับ Leet normalization (เช่น Pa$$w0rd → password)
คำแนะนำเพื่อปรับปรุง
- ดูดีแล้ว! ไม่มีข้อมูลเพื่อปรับปรุงในขณะนี้
คำอธิบายเกี่ยวกับความเป็นส่วนตัว:การตรวจสอบทำทั้งหมดในเบราว์เซอร์ของคุณท้องถิ่น รหัสผ่านจะไม่ถูกส่งขึ้นไป。
วิธีใช้งาน
วิเคราะห์รหัสผ่านในเครื่องและรับคำแนะนำเพื่อปรับปรุงที่สามารถดำเนินการได้
1) ป้อนหรือวางรหัสผ่าน ผลลัพธ์จะปรับปรุงแบบเรียลไทม์
2) ปรับนโยบายตามต้องการ (ความยาวขั้นต่ำ/ข้อกำหนดประเภทอักขระ)
3) เพิ่มคำอ่อนทั่วไปลงในรายการบล็อกเพื่อช่วยในการระบุ (รองรับการทำให้เป็นมาตรฐานแบบ Leet)
4) ใช้การนำเข้า/ส่งออกเพื่อแชร์การตั้งค่านโยบาย
คุณสมบัติเด่น
- การวิเคราะห์แบบโลคอล 100% เพื่อการปกป้องความเป็นส่วนตัวเป็นลำดับแรก
- การตรวจจับขั้นสูง: การเคลื่อนที่บนแป้นพิมพ์, วันที่, การทำซ้ำตามระยะเวลา, ลำดับ, การทำซ้ำ เป็นต้น
- การจับคู่รายชื่อป้องกันแบบ Leet normalization (เช่น Pa$$w0rd → password)
- นโยบายที่ยืดหยุ่น: ความยาวขั้นต่ำและความต้องการประเภทตัวอักษร
- นำเข้า/ส่งออกนโยบาย JSON ด้วยคลิกเดียว
- วิเคราะห์ในเครื่องตรวจจับด้วยคลิกเดียว
คำถามที่พบบ่อย
รหัสผ่านของฉันจะถูกอัปโหลดหรือไม่?
ไม่ ทุกการวิเคราะห์จะทำในเบราว์เซอร์ของคุณเท่านั้น
“ค่าเอนโทรปี” หมายถึงอะไร?
โดยทั่วไปหมายถึงจำนวนครั้งการลองที่จำเป็นเพื่อเดาได้ ความแข็งแกร่งจริงจะลดลงเมื่อมีโครงสร้าง
ทำไมคะแนนถึงลดลง?
รูปแบบเช่น ลำดับ, วันที่ หรือการเคลื่อนที่บนแป้นพิมพ์ จะลดความแข็งแกร่ง
ความรู้ที่เกี่ยวข้อง
ค่าความไม่แน่นอน (Entropy)
ค่าความไม่แน่นอนใช้ในการประมาณขนาดของพื้นที่การค้นหาที่ขึ้นอยู่กับชุดตัวอักษรและความยาว ถ้ามีโครงสร้าง (รูปแบบ, คำ) ค่าความไม่แน่นอนที่มีประสิทธิภาพจะลดลงแม้ว่าบิตดั้งเดิมดูจะสูง
คำอธิบายรายการตรวจสอบ
- ลำดับตัวอักษรหรือตัวเลข เช่น 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}"),
}
}
คำอธิบาย: ไลบรารีเหล่านี้ให้การประมาณความแข็งแกร่งและรูปแบบ อาจมีความแตกต่างเล็กน้อยจากรายการตรวจจับในหน้านี้