Langsung ke konten
LeedyBox
Dukung

Penjelasan Fungsi Hash

Fungsi hash mengubah input apa pun menjadi sidik jari pendek dengan panjang tetap. Panduan ini menjelaskan kegunaan MD5, SHA-1, dan SHA-256, kekurangannya, dan cara membandingkan file dengan checksum yang dipublikasikan.

Apa Itu Hash

Fungsi hash kriptografis membaca data berukuran berapa pun dan menghasilkan digest dengan panjang tetap: 128 bit untuk MD5, 160 bit untuk SHA-1, dan 256 bit untuk SHA-256, biasanya ditampilkan sebagai teks heksadesimal. Input yang sama selalu menghasilkan digest yang sama, dan mengubah satu bit saja pada input menghasilkan digest yang sangat berbeda. Hash bersifat satu arah: Anda tidak dapat memulihkan input dari digest, kecuali dengan menebak input dan membandingkan hasilnya.

Panduan ini memberikan informasi umum. Untuk keputusan terkait keamanan, ikuti persyaratan organisasi Anda atau layanan yang Anda gunakan.

Checksum dan Integritas

Penggunaan sehari-hari yang paling umum adalah memeriksa apakah file diterima secara utuh. Halaman unduhan mungkin memublikasikan nilai SHA-256 di samping file. Setelah mengunduh, Anda menghitung hash salinan Anda dan membandingkannya dengan nilai yang dipublikasikan. Jika nilainya cocok, file tersebut sangat mungkin identik dengan file yang di-hash oleh penerbit; jika berbeda, unduhan rusak atau file tersebut versi yang berbeda.

Checksum hanya bermanfaat jika nilai yang dipublikasikan itu sendiri dapat dipercaya. Jika penyerang dapat mengubah file sekaligus checksum di halaman yang sama, hash yang cocok tidak membuktikan banyak hal. Tanda tangan digital mengatasi masalah tersebut.

Mengapa MD5 dan SHA-1 Bukan untuk Keamanan

Hash yang aman seharusnya membuat upaya menemukan dua input berbeda dengan digest yang sama (tabrakan atau collision) tidak praktis untuk dilakukan. Serangan tabrakan yang praktis telah dipublikasikan untuk MD5 maupun SHA-1, sehingga penyerang dapat menyiapkan dua file berbeda yang memiliki hash yang sama. Karena itu, keduanya tidak lagi dianggap cocok untuk tanda tangan digital, sertifikat, atau penggunaan keamanan lainnya.

MD5 dan SHA-1 masih dapat mendeteksi kerusakan yang tidak disengaja, dan beberapa sistem lama masih memublikasikannya. Untuk pekerjaan baru, SHA-256 atau anggota lain keluarga SHA-2 (SHA-384, SHA-512) adalah pilihan yang biasa.

AlgoritmaPanjang digestStatus keamanan
MD5128 bit (32 karakter hex)Rentan tabrakan; hanya untuk checksum lama
SHA-1160 bit (40 karakter hex)Rentan tabrakan; penggunaan lama
SHA-256256 bit (64 karakter hex)Banyak digunakan dan direkomendasikan
SHA-384 / SHA-512384 / 512 bitBanyak digunakan dan direkomendasikan

Hashing Bukan Enkripsi, dan Kata Sandi Butuh Lebih

Enkripsi dapat dibalik dengan kunci yang tepat; hashing tidak dirancang untuk dibalik. Namun hash tidak menyembunyikan input yang pendek atau mudah ditebak: siapa pun dapat meng-hash kata umum atau nomor telepon lalu mencari yang cocok.

Itulah sebabnya hash cepat seperti MD5 atau SHA-256 saja tidak cocok untuk menyimpan kata sandi. Hash tersebut dirancang agar cepat, sehingga penyerang dapat menguji tebakan dalam jumlah sangat besar dengan cepat. Penyimpanan kata sandi menggunakan algoritma lambat dengan salt yang dibuat khusus untuk tujuan itu, seperti Argon2, scrypt, atau bcrypt. Jika Anda membangun sistem login, gunakan pustaka yang terpelihara dan panduan terkini untuk platform Anda, bukan hash serbaguna.

HMAC untuk Autentikasi Pesan

Hash biasa menunjukkan apakah data berubah, tetapi siapa pun dapat menghitungnya ulang. HMAC (hash-based message authentication code) menggabungkan data dengan kunci rahasia, misalnya HMAC-SHA256. Hanya pihak yang mengetahui kunci yang dapat menghasilkan nilai yang benar, sehingga penerima dapat memeriksa bahwa pesan berasal dari pemegang kunci dan tidak diubah. Webhook dan penandatanganan permintaan API umumnya menggunakan HMAC. Jaga kerahasiaan kunci; siapa pun yang memilikinya dapat membuat kode yang valid.

Mengapa Teks yang Sama Menghasilkan Hash Berbeda

Hash dihitung dari byte, bukan dari teks yang Anda lihat. Perbedaan berikut mengubah hasilnya:

  • Akhir baris: Windows menggunakan CR LF, sedangkan Linux dan macOS menggunakan LF.
  • Encoding karakter: "é" berupa byte yang berbeda di UTF-8 dan di encoding lama.
  • Pergantian baris atau spasi di akhir, atau byte order mark di awal file.
  • Huruf besar vs huruf kecil pada input.

Jika hash tidak cocok, periksa hal-hal ini terlebih dahulu. Meng-hash file asli biasanya lebih andal daripada meng-hash teks yang disalin darinya. Output hex itu sendiri tidak membedakan huruf besar dan kecil: A1B2 dan a1b2 adalah nilai yang sama.

Pertanyaan Umum

Bisakah saya mendekripsi hash MD5 atau SHA-256?

Tidak. Hash bukan data terenkripsi. Layanan "dekripsi" online mencari hash yang sudah dihitung sebelumnya dari input umum, itulah sebabnya hash dari nilai sederhana hanya memberikan sedikit perlindungan.

Algoritma mana yang sebaiknya saya gunakan untuk memverifikasi unduhan?

Gunakan yang disediakan penerbit. Jika tersedia beberapa, SHA-256 atau SHA-512 adalah pilihan yang lebih baik daripada MD5 atau SHA-1.

Apakah Generator Hash mengunggah file saya?

Generator Hash LeedyBox menghitung hash di browser Anda, sehingga teks atau file yang Anda pilih diproses di perangkat Anda.