Pembuat hash
Buat hash MD5, SHA-1, SHA-256, SHA-384, dan SHA-512 dari teks sekaligus, dalam heksadesimal atau Base64; tempel checksum yang diharapkan dan lihat yang cocok.
Apa yang sebenarnya dilakukan fungsi hash
Fungsi hash kriptografis mengambil masukan berukuran apa pun dan menghasilkan string bita berpanjang-tetap — digest, atau "hash". Beri ia satu huruf atau seluruh novel dan MD5 selalu mengembalikan 16 bita, SHA-256 selalu mengembalikan 32. Masukan yang sama selalu menghasilkan digest yang sama, dan mengubah satu bit di mana pun dalam masukan mengubah kira-kira separuh bit keluaran, itulah sebabnya dua berkas yang nyaris identik punya hash yang sama sekali tak berhubungan.
Sifat krusialnya adalah fungsi itu hanya berjalan satu arah. Menghitung hash berkas itu cepat; memulihkan berkas dari hash-nya bukan sekadar lambat melainkan mustahil secara prinsip, karena keluaran berpanjang-tetap tak bisa mengodekan masukan tak terbatas. Hash adalah sidik jari, bukan salinan terenkripsi — tak ada yang bisa didekripsi.
Untuk apa orang sebenarnya memakai hash
- Memverifikasi unduhan: proyek menerbitkan SHA-256 dari rilis, Anda meng-hash berkas yang Anda terima, dan digest yang cocok berarti bitanya tiba utuh.
- Mendeteksi perubahan: sistem kendali versi, cadangan, dan deduplikasi membandingkan hash alih-alih berkas utuh, karena membandingkan 32 bita jauh lebih murah daripada membandingkan gigabita.
- Subresource Integrity: halaman web memaku hash Base64 dari skrip yang dimuatnya dari CDN, dan peramban menolak menjalankan berkas itu jika ia tak cocok.
- Menyimpan sandi — tetapi dengan fungsi lambat yang dirancang khusus, tak pernah hash polos. Lihat di bawah.
Perhatikan kesamaan mereka: hash adalah pengganti ringkas untuk sesuatu yang lebih besar, dipakai untuk menjawab "apakah ini hal yang sama dengan yang saya harapkan?" tanpa mengirim atau menyimpan hal itu sendiri.
MD5 dan SHA-1 rusak — apa artinya dalam praktik
Fungsi hash dianggap rusak begitu seseorang bisa membangun tumbukan: dua masukan berbeda yang menghasilkan digest sama. Tumbukan MD5 sudah bisa dihitung pada perangkat keras biasa sejak 2004, dan pada 2017 serangan SHAttered menghasilkan dua berkas PDF berbeda dengan hash SHA-1 yang identik. Kedua algoritme ditandai dalam alat ini karena alasan itu.
Konsekuensi praktisnya lebih sempit daripada "jangan pernah memakainya". Tumbukan berarti penyerang yang mengendalikan kedua berkas bisa membuat yang jahat cocok dengan digest yang jinak, jadi MD5 dan SHA-1 tak lagi bisa membuktikan bahwa berkas tak dirusak oleh pihak yang berniat jahat. Keduanya masih sangat berguna untuk mendeteksi kerusakan tak disengaja — unduhan terpotong, bit terbalik pada cakram — dan Anda akan terus menemuinya dalam sistem warisan, header ETag, dan manifes paket lama yang tak akan ditulis ulang.
Aturan praktisnya: jika pertanyaannya "apakah ini rusak saat transit?", MD5 tak apa. Jika pertanyaannya "apakah seseorang menggantinya dengan sengaja?", pakai SHA-256 atau lebih baik.
Jangan pernah meng-hash sandi dengan ini
MD5, SHA-1, bahkan SHA-256 dirancang agar cepat, dan kecepatan adalah persis sifat yang salah untuk menyimpan sandi. GPU modern menghitung miliaran hash SHA-256 per detik, jadi basis data curian berisi sandi ter-hash polos bisa diserang pada skala luar biasa — dan karena sandi yang sama selalu menghasilkan digest yang sama, tabel prakomputasi membuatnya lebih murah lagi.
Penyimpanan sandi butuh fungsi yang sengaja lambat, ber-salt, dan keras-memori: Argon2id, scrypt, atau bcrypt. Mereka menambahkan salt acak unik per sandi, sehingga sandi identik tak berbagi digest, dan biayanya bisa disetel, sehingga tiap tebakan menelan waktu dan memori nyata dari penyerang. Alat ini untuk checksum dan sidik jari, bukan untuk hashing sandi.
Membaca dan membandingkan digest
Digest yang sama bisa ditulis dengan lebih dari satu cara. Heksadesimal huruf kecil adalah yang dicetak alat baris-perintah standar, dan itulah yang biasanya akan Anda bandingkan:
md5sum file.iso # Linux sha256sum file.iso # Linux shasum -a 256 file.iso # macOS Get-FileHash file.iso -Algorithm SHA256 # PowerShell (prints uppercase) certutil -hashfile file.iso SHA256 # Windows (prints uppercase)
Besar-kecil heksadesimal tak membawa makna — PowerShell dan certutil mencetak huruf besar, alat Unix mencetak huruf kecil, dan keduanya adalah nilai sama. Kotak perbandingan dalam alat ini mengabaikan besar-kecil heksadesimal karena itu. Base64 adalah hal berbeda: ia adalah pengodean yang lebih padat dari bita yang sama, dipakai oleh Subresource Integrity dan berbagai API, dan di sana besar-kecil signifikan, jadi ia dibandingkan persis.
Satu kebiasaan terakhir yang layak dibentuk: jangan pernah menatap dua digest panjang untuk memutuskan apakah keduanya cocok. Mata manusia sangat pandai melihat yang diharapkannya, dan beberapa karakter pertama dan terakhir yang cocok tak berarti apa pun. Tempel nilai yang diharapkan dan biarkan perbandingannya persis.
Pertanyaan yang sering diajukan
- Apakah teks saya dikirim ke server?
- Tidak. Setiap digest dihitung di peramban Anda — keluarga SHA melalui Web Crypto API dan MD5 melalui JavaScript yang berjalan di mesin Anda sendiri. Tidak ada yang Anda ketik meninggalkan perangkat Anda.
- Bisakah hash dibalik untuk mendapatkan teks asli kembali?
- Tidak. Hash adalah sidik jari berpanjang-tetap, bukan salinan terenkripsi, dan aslinya tak bisa dipulihkan darinya. Situs yang mengiklankan "dekripsi MD5" mencari hash Anda dalam tabel berisi masukan umum yang telah dihitung sebelumnya, yang hanya bekerja untuk teks pendek atau dapat diprediksi.
- Mengapa MD5 dan SHA-1 membawa peringatan di sini?
- Karena tumbukan sudah praktis bagi keduanya: dua masukan berbeda bisa dibangun untuk berbagi digest. Itu membuatnya tak cocok untuk membuktikan berkas tak dirusak dengan sengaja, meski keduanya tetap baik untuk menangkap kerusakan tak disengaja.
- Algoritme mana yang sebaiknya saya pakai?
- SHA-256 adalah default yang masuk akal dan yang diterbitkan kebanyakan proyek hari ini. SHA-512 tak lebih aman secara berarti untuk tujuan ini tetapi lebih cepat pada perangkat keras 64-bit. Pakai MD5 atau SHA-1 hanya ketika sesuatu yang tak Anda kendalikan sudah mensyaratkannya.
- Bisakah saya meng-hash sandi dengan ini?
- Bisa, tetapi Anda sebaiknya tak menyimpan hasilnya. Penyimpanan sandi butuh fungsi lambat dan ber-salt seperti Argon2id, scrypt, atau bcrypt — hash cepat seperti ini adalah persis yang membuat basis data sandi curian mudah dipecahkan.
- Mengapa hash berubah ketika saya menambah spasi atau baris-baru?
- Karena spasi adalah bagian dari masukan. Baris-baru di ujung adalah alasan tunggal paling umum hash tak cocok dengan yang Anda harapkan — teks yang disalin dari terminal atau penyunting sering membawanya tanpa Anda bisa melihatnya.
- Apakah ia menangani aksara Ibrani, Arab, dan emoji dengan benar?
- Ya. Teks dikodekan sebagai bita UTF-8 sebelum di-hash, yang menjadi standar yang dipakai setiap alat lain, jadi meng-hash "שלום" atau emoji di sini memberi digest yang sama dengan md5sum atau sha256sum pada berkas UTF-8 yang berisi karakter yang sama.
- Mengapa ia meng-hash teks tetapi bukan berkas?
- Web Crypto tak punya API digest streaming, jadi berkas harus dibaca ke memori seutuhnya sebelum bisa di-hash, dan MD5 yang ditulis tangan akan terasa lambat pada berkas besar. Hashing teks mencakup kasus umum dengan jujur alih-alih menawarkan hashing berkas yang membuat halaman macet.
Alat terkait
- Pendekode sertifikat & PEM
Baca sertifikat X.509 atau CSR tanpa OpenSSL.
- Pembuat HMAC
Tandatangani pesan dengan kunci, atau verifikasi tanda tangan webhook.
- Debugger kode TOTP / 2FA
Hasilkan dan debug kode 2FA, dengan derivasi lengkap.
- Bcrypt
Buat hash bcrypt, atau periksa kata sandi terhadap hash yang ada.