Alat Keamanan

Pemeriksa Kekuatan Kata Sandi

Analisis real-time dengan mesin zxcvbn: kamus kata sandi umum, deretan tombol keyboard, urutan, pengulangan, dan tanggal semuanya mengurangi nilai Anda — ukuran keamanan yang jauh lebih akurat daripada hanya menghitung kelas huruf kecil/huruf besar/angka/simbol. Semuanya berjalan secara lokal; kata sandi Anda tidak pernah meninggalkan browser.

Didukung oleh zxcvbn Kamus kata sandi lemah 100% sisi klien Hasil real-time
Dihitung hanya di perangkat Anda — tidak pernah diunggah
k-anonymitas: hanya 5 karakter pertama hash SHA-1 yang meninggalkan browser Anda
Kekuatan /100
Sangat lemah Sangat Kuat
Panjang
Entropi Efektif
bit
Ukuran Charset
Serangan offline (GPU farm, ~10 miliar tebakan/detik)
Serangan online (dibatasi laju, ~100 tebakan/jam)
Pengaturan kebijakan lanjutan

Dipisahkan dengan koma atau baris baru, tidak peka terhadap huruf besar/kecil. zxcvbn secara otomatis menangkap variasi huruf, substitusi leet (misal. Pa$$w0rd), dan kebalikan kata.

Bandingkan dua kata sandi

MENGAPA INI PENTING

Mengapa "huruf besar + huruf kecil + angka + simbol" bukanlah keamanan

P@ssw0rd! memenuhi keempat syarat karakter namun tetap berada di daftar pelanggaran data nyata. Kekuatan bergantung pada tingkat kemudahan ditebak, bukan perhitungan klas karakter.

01

Pencocokan kata sandi lemah

Kamus bawaan kata sandi umum dan kata-kata memberikan hukuman besar — password, 123456, dan P@ssw0rd benar-benar dinilai sangat lemah.

02

Deteksi pola

Urutan keyboard, urutan lurus, pengulangan, tanggal, dan kata umum semuanya memperkecil ruang tebakan yang efektif.

03

Entropi yang efektif, bukan teoretis

Skor ini memperkirakan tebakan nyata berdasarkan struktur yang ditemukan — bukan ukuran charset dikalikan dengan panjang.

04

Dua skenario serangan

Perkiraan terpisah untuk pencarian secara offline dengan GPU dan tebakan online dengan batas kecepatan membantu memahami biaya bagi penyerang.

05

Kebijakan & daftar blok khusus

Tetapkan panjang minimum dan persyaratan klas karakter; tambahkan nama perusahaan atau kode nama proyek agar sesuai dengan aturan kata sandi perusahaan.

06

Sepenuhnya lokal

Kata sandi Anda tidak pernah meninggalkan browser atau menyentuh server; pengaturan hanya disimpan di localStorage Anda sendiri.

Memahami kekuatan kata sandi

Cara kerja penilaian, arti waktu peretasan, dan apa yang sebenarnya membuat kata sandi yang baik.

Bagaimana skor 0–4 zxcvbn dihitung?

zxcvbn pertama membagi kata sandi menjadi potongan-potongan: kata kamus (kata sandi umum, kata bahasa Inggris), urutan keyboard, urutan, pengulangan, tanggal, dan fragmen brute-force.

Ia memperkirakan tebakan per potongan, menggabungkannya menjadi jumlah tebakan total, dan memetakkannya ke skor 0–4. Transformasi umum diperhitungkan secara otomatis — pembalikan huruf besar/kecil, substitusi leet (@→a, 0→o), akhiran tahun — itulah sebabnya P@ssw0rd mendapatkan skor buruk meskipun memiliki beragam karakter.

Apa perbedaan antara entropi efektif dan ukuran charset?

Ukuran charset mengalikan ukuran alfabet dengan panjang — batas teoretis yang mengasumsikan setiap karakter sepenuhnya acak, yang hampir tidak pernah terjadi pada kata sandi nyata.

Entropi efektif (jumlah bit yang ditampilkan di sini) adalah ruang tebakan nyata yang diperkirakan zxcvbn setelah menemukan kata kamus dan pola. Pada panjang yang sama, iloveyou2024 memiliki entropi efektif yang jauh lebih rendah daripada string acak.

Bagaimana waktu peretasan diperkirakan — apakah dapat diandalkan?

Waktu retak = perkiraan tebakan ÷ tebakan per detik. Dua kecepatan ditampilkan: ~10 miliar/detik untuk farm GPU offline (penyerang mendapatkan hash), dan ~100/jam untuk login online yang dibatasi laju.

Anggaplah ini sebagai urutan magnitudo, bukan prediksi: kecepatan nyata bergantung pada algoritma hash (bcrypt/Argon2 jauh lebih lambat daripada MD5 dalam urutan magnitudo), perangkat keras, dan kualitas kamus. Perbedaan 10× tidak berarti apa-apa; celah sejuta kali berbeda.

Apa yang sebenarnya membuat kata sandi itu baik?

Dua cara andal: string acak 16+ karakter dari pengelola kata sandi, unik per situs; atau frasa sandi dari 4+ kata yang tidak berhubungan (seperti correct-horse-battery-staple) — panjang dan tidak bermakna.

Apa pun pilihanmu, padukan dengan autentikasi multi-faktor (MFA) dan jangan pernah menggunakan kata sandi yang sama di berbagai situs.

Situs saya mewajibkan huruf besar/kecil, digit, simbol — mengapa skor rendah?

Kebijakan perusahaan (panjang, kelas karakter) adalah batas kepatuhan: menjawab "apakah sesuai?". Skor zxcvbn menjawab "bisakah kata sandi ditebak?". Keduanya independen.

Menambahkan tanda seru dan tahun ke kata umum (password!2024) lolos sebagian besar pemeriksaan kebijakan namun langsung dibobol serangan kamus dalam beberapa detik.

Apakah kata sandi saya diunggah ke mana saja?

Tidak. Semuanya berjalan di perambanmu melalui JavaScript — tidak ada permintaan jaringan yang mengirim kata sandi, dan juga bisa berjalan secara offline. Hanya kebijakan kustommu (aturan panjang, daftar blokir) yang disimpan secara lokal; itu tidak pernah berisi kata sandi.

Memeriksa kekuatan kata sandi dalam kode

Untuk menambahkan pemeriksaan kekuatan langsung ke formulir pendaftaran atau perubahan kata sandi sendiri, gunakan port zxcvbn untuk bahasamu:

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

Skor dan perkiraan pola mungkin sedikit berbeda dari halaman ini tergantung pada versi library, namun prinsipnya sama. Untuk pemeriksaan sisi server, tetapkan juga batas panjang dan pembatasan laju sehingga input yang terlalu besar tidak bisa digunakan untuk membebani CPU.

Pertanyaan yang Sering Diajukan

Bagaimana kerja penguji kekuatan kata sandi ini?

Menggunakan zxcvbn, algoritma sumber terbuka dari Dropbox: kata sandi dicocokkan dengan kamus kata umum, daftar kata Bahasa Inggris, urutan jalur keyboard, deret, tanggal, dan pola berulang. Perkiraan rata-rata jumlah tebakan yang dibutuhkan penyerang dipetakan ke skor 0–4 dan perkiraan waktu retak.

P@ssw0rd terlihat kompleks — mengapa ini "sangat lemah"?

Ini adalah salah satu kata sandi lemah paling ikonik dalam korpus pelanggaran. Muncul langsung di kamus zxcvbn, dan kapitalisasi serta substitusi leet (a→@, o→0) dikenali secara otomatis. Karakter bervariasi dengan struktur yang sepenuhnya dapat diprediksi adalah hal yang pertama kali dicoba oleh kamus penyerang berbasis aturan.

Seberapa panjang sebaiknya kata sandi?

Ketika dihasilkan secara acak, 12+ karakter biasanya dapat menangkal serangan online, sedangkan 16+ dapat bertahan melawan retak GPU offline selama bertahun-tahun. Panjang lebih penting daripada kompleksitas karakter: string huruf kecil acak 20 karakter mengalahkan campuran 10 karakter dari empat kelas.

Mengapa memisahkan waktu retak offline dan online?

Skenario serangan berbeda: setelah pelanggaran basis data, penyerang dapat mencoba hash secara lokal di GPU dengan miliaran tebakan per detik; terhadap login langsung, pembatasan laju hanya mengizinkan beberapa tebakan per detik. Kata sandi yang sama dapat bertahan triliun kali lebih lama di satu skenario daripada yang lain — itulah mengapa keduanya ditampilkan.

Apakah input saya disimpan di mana saja?

Tidak. Kata sandimu hanya berada di memori perambanmu dan akan hilang saat penyegaran. Hanya pengaturan kebijakan kustommu (aturan panjang, daftar blokir) yang disimpan di penyimpanan lokal — itu tidak pernah berisi kata sandi.

Alat terkait