Generator Kata Sandi
Membangun generator password acak dengan pengaturan panjang dan jenis karakter.
Kenapa Generator Password?
Password kuat itu panjang dan acak, tapi manusia buruk dalam membuat keacakan. Generator menyelesaikan masalah nyata sekaligus mengajarkan: random, string building, dan indikator kekuatan.
Langkah Membangun
HTML: Tampilan password (dengan tombol salin dan refresh), slider panjang (8-32), checkbox: huruf besar, angka, simbol, dan indikator kekuatan.
CSS: Tampilan password dalam font monospace besar. Indikator kekuatan sebagai 4 segmen bar yang terisi sesuai skor.
JS:
- Kumpulan karakter per jenis: lowercase selalu, uppercase/angka/simbol opsional.
buatPassword(): loop sebanyak panjang, ambil karakter acak denganMath.floor(Math.random() * kumpulan.length).- Pastikan minimal satu karakter dari tiap jenis yang dipilih (ambil satu dulu, lalu acak urutannya).
- Skor kekuatan: berdasarkan panjang + variasi jenis. Tampilkan "Lemah/Sedang/Kuat/Sangat Kuat".
Catatan Keamanan Jujur
Math.random() TIDAK aman untuk kriptografi. Untuk password sungguhan, gunakan crypto.getRandomValues(). Modul ini memakai Math.random agar mudah dipahami, tapi sebutkan batasannya: inilah kejujuran teknis yang penting.
Kesalahan Umum
- Karakter jenis terpilih tidak dijamin muncul (atasi dengan forced pick lalu shuffle).
- Panjang slider tidak sinkron dengan label (update di satu fungsi).
- Lupa mengecualikan karakter ambigu (l, 1, O, 0) yang membingungkan pengguna.
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Passphrase Kata
Tambahkan mode "Passphrase": gabungkan 4 kata Indonesia acak dengan pemisah (misal "kucing-terbang-42-biru"). Sediakan daftar 50 kata di JS.