Selamat Datang di Uttawarat Beach

Selamat Datang di Uttawarat Beach

Uttawarat Beach - Surga Tersembunyi di Maluku

Jelajahi keindahan alam Kepulauan Watubela, Kesui Pesisir, dan pesona Uttawarat Beach yang masih alami di Maluku.

Destinasi wisata bahari dengan pantai berpasir putih, air laut jernih, dan panorama bawah laut yang memukau. Temukan pengalaman liburan tak terlupakan di salah satu surga tersembunyi Indonesia Timur.

Membuat Aplikasi Generator Password Aman dengan JavaScript

Membuat Aplikasi Generator Password Aman dengan JavaScript

Dipublikasikan: Juli 2026
Password

Keamanan digital dimulai dari password yang kuat. Tutorial ini akan memandu Anda membuat password generator yang bisa menghasilkan password acak dengan berbagai kriteria — panjang, huruf besar, huruf kecil, angka, dan simbol.

Fitur

  • Atur panjang password (4-32 karakter)
  • Opsi huruf besar/kecil, angka, simbol
  • Tombol copy ke clipboard
  • Indikator kekuatan password

Kode Lengkap

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Password Generator</title>
  <style>
    * { margin:0; padding:0; box-sizing:border-box; }
    body {
      font-family:'Segoe UI',Arial,sans-serif;
      background:linear-gradient(135deg,#0c0c1d,#111133);
      min-height:100vh; display:flex; justify-content:center; align-items:center; padding:20px;
    }
    .container {
      background:#1a1a2e; border-radius:20px; padding:35px;
      box-shadow:0 20px 60px rgba(0,0,0,0.5); width:100%; max-width:460px;
    }
    h1 { text-align:center; color:#e0e0ff; margin-bottom:5px; font-size:26px; }
    .subtitle { text-align:center; color:#8888aa; margin-bottom:25px; font-size:14px; }
    .password-display {
      background:#0f0f23; padding:18px; border-radius:12px;
      display:flex; align-items:center; justify-content:space-between; margin-bottom:25px;
      border:2px solid #2a2a4a;
    }
    .password-display span { color:#fff; font-size:20px; font-family:monospace; word-break:break-all; }
    .password-display button {
      background:#4a4ae0; color:#fff; border:none; padding:10px 16px;
      border-radius:8px; cursor:pointer; font-size:14px; white-space:nowrap; margin-left:10px;
    }
    .password-display button:hover { background:#5a5af0; }
    .settings { margin-bottom:25px; }
    .setting-row { display:flex; justify-content:space-between; align-items:center; margin-bottom:15px; }
    .setting-row label { color:#ccccee; font-size:15px; }
    .setting-row input[type="number"] {
      width:70px; padding:8px; background:#0f0f23; border:2px solid #2a2a4a;
      border-radius:8px; color:#fff; font-size:16px; text-align:center;
    }
    .setting-row input[type="checkbox"] {
      width:20px; height:20px; accent-color:#4a4ae0;
    }
    .generate-btn {
      width:100%; padding:16px; background:#4a4ae0; color:#fff;
      border:none; border-radius:12px; cursor:pointer; font-size:17px; font-weight:600;
    }
    .generate-btn:hover { background:#5a5af0; }
    .strength { margin-top:20px; padding:12px; border-radius:10px; text-align:center; font-weight:600; display:none; }
    .strength.weak { display:block; background:#2d1b1b; color:#ff6b6b; }
    .strength.medium { display:block; background:#2d2b1b; color:#fdcb6e; }
    .strength.strong { display:block; background:#1b2d1b; color:#00b894; }
    .toast {
      display:none; position:fixed; bottom:30px; left:50%; transform:translateX(-50%);
      background:#00b894; color:#fff; padding:14px 28px; border-radius:12px; font-size:15px;
    }
  </style>
</head>
<body>
  <div class="container">
    <h1>🔐 Password Generator</h1>
    <div class="subtitle">Buat password aman dalam satu klik</div>
    <div class="password-display">
      <span id="passwordDisplay">Klik Generate</span>
      <button onclick="copyPassword()">Copy</button>
    </div>
    <div class="settings">
      <div class="setting-row">
        <label>Panjang Password</label>
        <input type="number" id="length" value="12" min="4" max="32" />
      </div>
      <div class="setting-row">
        <label>Huruf Besar (A-Z)</label>
        <input type="checkbox" id="uppercase" checked />
      </div>
      <div class="setting-row">
        <label>Huruf Kecil (a-z)</label>
        <input type="checkbox" id="lowercase" checked />
      </div>
      <div class="setting-row">
        <label>Angka (0-9)</label>
        <input type="checkbox" id="numbers" checked />
      </div>
      <div class="setting-row">
        <label>Simbol (!@#$%&*)</label>
        <input type="checkbox" id="symbols" checked />
      </div>
    </div>
    <button class="generate-btn" onclick="generate()">Generate Password</button>
    <div class="strength" id="strength"></div>
  </div>
  <div class="toast" id="toast">Password berhasil disalin! 📋</div>
  <script>
    function generate() {
      const len = parseInt(document.getElementById('length').value);
      const hasUpper = document.getElementById('uppercase').checked;
      const hasLower = document.getElementById('lowercase').checked;
      const hasNum = document.getElementById('numbers').checked;
      const hasSym = document.getElementById('symbols').checked;
      if (!hasUpper && !hasLower && !hasNum && !hasSym) return alert('Pilih minimal satu jenis karakter');
      const upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
      const lower = 'abcdefghijklmnopqrstuvwxyz';
      const nums = '0123456789';
      const syms = '!@#$%^&*()_+-=[]{}|;:,.<>?';
      let chars = '';
      if (hasUpper) chars += upper;
      if (hasLower) chars += lower;
      if (hasNum) chars += nums;
      if (hasSym) chars += syms;
      let password = '';
      // Ensure at least one of each selected type
      if (hasUpper) password += upper[Math.floor(Math.random()*upper.length)];
      if (hasLower) password += lower[Math.floor(Math.random()*lower.length)];
      if (hasNum) password += nums[Math.floor(Math.random()*nums.length)];
      if (hasSym) password += syms[Math.floor(Math.random()*syms.length)];
      for (let i = password.length; i < len; i++) password += chars[Math.floor(Math.random()*chars.length)];
      password = password.split('').sort(() => Math.random()-0.5).join('');
      document.getElementById('passwordDisplay').textContent = password;
      // Strength indicator
      const strength = document.getElementById('strength');
      let score = 0;
      if (len >= 8) score++; if (len >= 12) score++; if (len >= 16) score++;
      if (hasUpper) score++; if (hasLower) score++; if (hasNum) score++; if (hasSym) score++;
      if (score <= 3) { strength.className = 'strength weak'; strength.textContent = '🔴 Lemah'; }
      else if (score <= 5) { strength.className = 'strength medium'; strength.textContent = '🟡 Sedang'; }
      else { strength.className = 'strength strong'; strength.textContent = '🟢 Kuat ✅'; }
    }
    function copyPassword() {
      const pw = document.getElementById('passwordDisplay').textContent;
      if (pw === 'Klik Generate') return;
      navigator.clipboard.writeText(pw);
      const toast = document.getElementById('toast');
      toast.style.display = 'block';
      setTimeout(() => toast.style.display = 'none', 2000);
    }
    generate();
  </script>
</body>
</html>

Cara Jalankan

  1. Simpan sebagai password.html
  2. Buka di browser
  3. Atur preferensi dan klik Generate

"Password kuat adalah benteng pertama keamanan digital Anda."


Label: Tutorial, Web App, Password Generator, Keamanan, JavaScript, HTML, CSS

Posting Komentar untuk "Membuat Aplikasi Generator Password Aman dengan JavaScript"