Generator htpasswd — bcrypt, Apache MD5 (apr1) & Basic Auth
Buat entri htpasswd dengan bcrypt, Apache MD5 (apr1), SHA-1 & lainnya. Dapatkan konfigurasi Apache, nginx & Docker siap pakai. 100% di browser Anda — tanpa upload.
Verifikasi hash yang ada
Apa Itu File htpasswd?
File .htpasswd menyimpan kredensial yang digunakan oleh HTTP Basic Authentication. Setiap baris adalah pasangan username:hash tunggal, di mana hash adalah digest satu arah dari password — teks asli tidak pernah disimpan. Server web membaca file ini untuk menentukan siapa yang boleh mengakses URL yang dilindungi. Di Apache, file .htaccess (atau blok <Directory>) merujuk ke file .htpasswd dan meminta browser memasukkan username dan password sebelum melayani halaman.
Format hash bergantung pada algoritma yang menghasilkannya. Alat htpasswd Apache dapat menghasilkan beberapa: bcrypt (baris dimulai dengan $2y$) adalah yang terkuat dan direkomendasikan untuk Apache, Docker Registry, dan Caddy; apr1 (Apache MD5, dimulai dengan $apr1$) adalah yang paling portabel dan default aman untuk nginx; SHA-1 (dimulai dengan {SHA}) tidak menggunakan salt dan dianggap tidak aman; crypt (DES tradisional) adalah warisan lama dan memotong pada 8 karakter; dan plain menyimpan password dalam teks biasa, yang tidak boleh pernah digunakan di produksi.
Generator ini berjalan sepenuhnya di browser Anda — tidak ada username, password, atau hash yang pernah diunggah. Jika Anda membutuhkan password yang kuat untuk entri Anda, gunakan Generator Kata Sandi Acak kami. Untuk membuat header Authorization: Basic secara manual, kredensialnya hanyalah base64(user:password), yang dapat Anda hasilkan dengan Encoder Base64 kami. Dan setelah endpoint Anda dilindungi, uji dari command line dengan Pembangun Perintah cURL kami.
# Apache htpasswd CLI equivalents (apache2-utils / httpd-tools) # bcrypt entry, printed to stdout (recommended; -B = bcrypt, -n = no file, -b = password on CLI) htpasswd -Bbn admin 's3cret' # → admin:$2y$10$N9qo8uLOickgx2ZMRZoMye... # apr1 (Apache MD5) entry, portable for nginx — no apache2-utils needed printf "admin:$(openssl passwd -apr1 's3cret')\n" # → admin:$apr1$k3l4Hj9.$qN8... # Append a user to an existing file from the shell htpasswd -B /etc/apache2/.htpasswd alice # Note: nginx delegates bcrypt to the system crypt(); on Alpine/musl or old # glibc that fails — prefer apr1 for nginx to stay portable.
Fitur Utama
Berbagai Algoritma Hash
Hasilkan entri bcrypt ($2y$), apr1 / Apache MD5 ($apr1$), dan SHA-1 ({SHA}) — ditambah opsi plain (teks biasa) untuk pengujian. Masing-masing menggunakan salt kriptografis yang baru di mana format mendukungnya.
Buat dan Verifikasi
Buat entri baru atau verifikasi yang sudah ada. Tempel baris user:hash yang tersimpan dan kata sandi kandidat untuk langsung mengonfirmasi apakah cocok — berguna untuk men-debug 401 di produksi.
Pilih Berdasarkan Server
Pilih Apache, nginx, Docker, atau Caddy dan algoritma yang tepat dipilih secara otomatis — bcrypt di mana didukung, apr1 untuk portabilitas nginx — sehingga Anda menghindari kegagalan crypt() yang diam-diam.
Blok Konfigurasi Siap Tempel
Dapatkan enam cuplikan konfigurasi siap salin — Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy, dan Traefik — sudah terhubung ke entri .htpasswd yang dihasilkan.
100% Sisi Klien
Semua proses hash terjadi secara lokal di browser Anda melalui Web Crypto dan implementasi bcrypt bawaan. Tidak ada username, password, atau hash yang pernah dikirim ke server, sehingga Anda dapat menghasilkan kredensial produksi secara privat.
Contoh
Entri bcrypt (direkomendasikan)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Entri bcrypt dengan awalan $2y$ dan cost 10. Ini adalah format terkuat dan paling portabel — gunakan untuk Apache, Docker Registry, Caddy, dan Traefik.
Entri apr1 (nginx portabel)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
Apache MD5 (apr1) dengan salt 8 karakter setelah penanda $apr1$. Default aman untuk nginx, di mana verifikasi bcrypt bergantung pada crypt() sistem yang tidak andal.
Entri SHA-1 (warisan lama)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= Entri {SHA} adalah base64 dari digest SHA-1 tanpa salt. Apache dan nginx menerimanya, tetapi tidak menggunakan salt dan tidak aman — disertakan hanya untuk kompatibilitas warisan.
Header Authorization: Basic
Authorization: Basic YWRtaW46czNjcmV0
Kredensial sisi klien untuk pengguna yang sama: base64('admin:s3cret'). Kirim header ini dengan curl -H atau Postman untuk autentikasi tanpa menulis file .htpasswd.
File .htpasswd multi-pengguna
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
Satu baris username:hash per pengguna. Algoritma dapat dicampur dalam file yang sama — di sini dua entri bcrypt dan satu entri apr1 hidup berdampingan untuk tiga pengguna.
Cara Penggunaan
- 1
Konfigurasi Server & Algoritma
Pilih server target Anda (Apache, nginx, Docker, Caddy). Algoritma yang tepat dipilih otomatis — bcrypt untuk Apache/Docker/Caddy, apr1 untuk nginx yang portabel — tetapi Anda dapat menggantinya dan menyetel cost bcrypt.
- 2
Buat Hash
Masukkan username dan password (atau klik Kata sandi acak), lalu klik Buat. Hash dihitung secara lokal dengan salt acak yang baru. Putar ulang salt kapan saja untuk membuat entri baru.
- 3
Salin Entri
Salin baris user:hash untuk file .htpasswd, salin perintah echo >> untuk shell, atau salin header Authorization: Basic untuk curl dan Postman.
- 4
Deploy Konfigurasi
Tempel blok konfigurasi yang dihasilkan ke .htaccess Apache, blok server nginx, Docker, ingress Kubernetes, Caddy, atau konfigurasi Traefik Anda, arahkan ke file .htpasswd, dan muat ulang server.
Kasus Penggunaan Umum
- Perlindungan Direktori Apache
- Kunci folder dengan HTTP Basic Auth menggunakan file .htaccess dan direktif AuthUserFile. Masukkan entri bcrypt dan blok konfigurasi Apache yang dihasilkan untuk memerlukan login di jalur mana pun.
- nginx auth_basic
- Lindungi blok location atau server dengan auth_basic dan auth_basic_user_file. Gunakan format apr1 agar verifikasi bekerja secara andal di seluruh Alpine, Debian, dan image dasar lainnya.
- Docker Registry
- Docker Registry pribadi hanya menerima entri htpasswd bcrypt. Buat baris $2y$ dengan htpasswd -Bbn, pasang ke container registry, dan autentikasi docker login Anda.
- Kubernetes ingress-nginx
- Buat Secret basic-auth dari file .htpasswd Anda dan rujuk dengan anotasi nginx.ingress.kubernetes.io/auth-type dan auth-secret untuk mengamankan rute ingress.
- Caddy & Traefik
- Direktif basic_auth Caddy dan middleware basicauth Traefik keduanya mengharapkan hash bcrypt. Tempel entri yang dihasilkan langsung ke Caddyfile atau label/konfigurasi dinamis Traefik Anda.
- Header Authorization curl & Postman
- Lewati file sepenuhnya untuk pengujian cepat: salin header Authorization: Basic untuk mengirim kredensial secara langsung. Masukkan ke flag curl -H atau request Postman untuk mengakses endpoint yang dilindungi.
Detail Teknis
- bcrypt ($2y$)
- Hash adaptif berbasis salt yang didasarkan pada cipher Blowfish dengan faktor cost yang dapat disetel. Setiap entri menyematkan salt 16-byte acak dan cost, sehingga password yang identik menghasilkan hash yang berbeda. Catatan: bcrypt memotong password pada 72 byte — karakter setelah itu diabaikan.
- apr1 (Apache MD5)
- Varian MD5 Apache yang diiterasi dan menggunakan salt ($apr1$ + salt 8 karakter). Menjalankan 1.000 putaran MD5, yang jauh lebih lemah dibandingkan cost adaptif bcrypt, tetapi diimplementasikan secara native oleh Apache dan nginx, menjadikannya format paling portabel di berbagai platform dan image dasar.
- SHA-1 dan crypt
- Entri SHA-1 ({SHA} + digest base64) tidak menggunakan salt, sehingga password yang identik menghasilkan hash yang identik dan rentan terhadap rainbow table — disertakan hanya untuk kompatibilitas warisan. crypt tradisional (DES) bahkan lebih lemah dan secara diam-diam memotong password pada 8 karakter.
- Salt & Iterasi
- Salting mencegah serangan precomputed (rainbow-table) dengan membuat setiap hash unik. bcrypt menggunakan salt acak 128-bit dengan cost yang dapat dikonfigurasi; apr1 menggunakan salt 8 karakter dengan 1.000 iterasi tetap. Gunakan Putar ulang salt untuk menghasilkan hash yang berbeda namun valid untuk password yang sama.
- Penanganan Base64 & UTF-8
- Password dikodekan sebagai byte UTF-8 sebelum di-hash, sehingga karakter non-ASCII ditangani secara konsisten. Header Authorization: Basic adalah base64 dari byte UTF-8 mentah username:password, sesuai dengan yang di-decode server di sisi penerima.
- Catatan Kejujuran & Batasan
- Hash yang dihasilkan dihitung secara lokal dan tidak pernah diverifikasi terhadap server yang berjalan. Entri yang disalin dan file .htpasswd yang diunduh tersimpan di clipboard dan disk Anda dalam bentuk plaintext-hash — perlakukan seperti rahasia, batasi izin file, dan bersihkan clipboard Anda setelah menempelkannya ke konfigurasi produksi.
Praktik Terbaik
- Utamakan bcrypt Di Mana Didukung
- Gunakan bcrypt ($2y$) untuk Apache, Docker, Caddy, dan Traefik — berbasis salt, adaptif, dan jauh lebih kuat dari apr1 atau SHA-1. Cadangkan apr1 khusus untuk nginx ketika ketergantungan bcrypt pada crypt() sistem membuatnya tidak andal.
- Simpan File di Luar Web Root
- Jauhkan .htpasswd dari direktori yang disajikan agar tidak pernah dapat diunduh melalui HTTP. Atur chmod 640 dan jadikan milik pengguna server web sehingga server dapat membacanya sementara akun lain tidak bisa.
- Selalu Sajikan Melalui HTTPS
- Basic Auth mengirimkan kredensial sebagai base64 yang dapat dibalik di setiap request. Tanpa TLS, siapa pun di jalur jaringan dapat membaca password. Jangan pernah mengaktifkan Basic Auth di HTTP biasa — terminasi TLS di depan endpoint yang dilindungi.
- Gunakan Password Unik dan Kuat
- Setiap akun harus memiliki password entropi tinggi tersendiri, tidak pernah digunakan ulang di berbagai layanan. Buat satu dengan Generator Kata Sandi Acak kami dan simpan di manajer kata sandi daripada membuatnya secara manual.
Pertanyaan yang Sering Diajukan
bcrypt vs apr1 — mana yang harus dipilih?
Apakah nginx mendukung bcrypt?
Bagaimana cara memperbaiki error nginx `crypt_r() failed (22: Invalid argument)`?
Di mana saya harus meletakkan file .htpasswd dan izin apa yang diperlukan?
Bagaimana cara mengkonfigurasi Basic Auth di .htaccess / nginx?
Apakah password saya diunggah ke suatu tempat?
Apa perbedaan antara $2a$, $2b$, dan $2y$ di bcrypt?
Cost bcrypt berapa yang harus saya gunakan?
htpasswd vs header Authorization: Basic — apa bedanya?
Saya tidak memiliki apache2-utils terpasang — bagaimana cara membuat entri htpasswd?
Apa arti flag htpasswd -B, -Bbn, -bnB?
Mengapa Docker Registry memerlukan bcrypt?
Apakah Basic Auth aman?
Alat Terkait
Lihat semua alat →Generator & Builder Perintah cURL
Web & API
Buat perintah curl di browser Anda — atur metode, header, autentikasi, dan body, dapatkan perintah siap salin secara instan. Preset untuk Bearer, POST JSON, unggah file. Gratis, privat, tanpa pendaftaran.
Konverter Basis Bilangan — Biner, Hex, Desimal & Oktal
Alat Konversi
Konversi antara biner, hex, desimal, oktal, dan basis apa pun (2-36) secara instan. Presisi BigInt, output siap kode. Gratis, privat — tanpa pendaftaran.
Decode & Encode Base64 Online — Konversi Instan di Browser
Encoding & Pemformatan
Decode dan encode Base64 online gratis. Konversi real-time dengan dukungan UTF-8 dan emoji. 100% privat di browser Anda. Tanpa pendaftaran.
Pengubah Case — UPPERCASE, lowercase, camelCase & Lainnya
Pemrosesan Teks
Ubah teks antara UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dan 6 format lainnya secara langsung. Gratis, hanya peramban, tanpa daftar.
Konverter Warna — HEX, RGB, HSL & OKLCH
Alat Konversi
Konversi HEX ke RGB, HSL, OKLCH, OKLAB, dan CMYK di peramban Anda — salin format apa pun dengan satu klik. Gratis, tanpa daftar, warna Anda tidak pernah meninggalkan halaman.
Generator Crontab & Pembuat Ekspresi Cron
Tanggal & Waktu
Bangun, validasi, dan dekode ekspresi cron di peramban Anda. Pratinjau langsung jadwal berikutnya dalam waktu lokal atau UTC. Sintaksis POSIX 5 kolom, preset, deskripsi bahasa biasa. Gratis, privat, tanpa daftar.