Security 6 Jul 2026 7 min bacaan

Apa Itu Checksum? MD5, SHA-1, SHA-256 Dijelaskan

Checksum adalah cap jari pendek yang membolehkan anda mengesahkan bahawa sesuatu fail tidak diubah atau rosak. Memahami algoritma hash mana yang perlu digunakan — dan di mana kelemahan MD5 — akan menyelamatkan anda daripada kesilapan keselamatan yang biasa.

Checksum guide: MD5, SHA-1, SHA-256 hash functions explained

Apakah Itu Checksum?

Checksum ialah string berjangka tetap yang dihasilkan daripada sebahagian data dengan menjalankannya melalui fungsi hash. Checksum bertindak sebagai cap jari: jika walaupun satu bit data asal berubah, checksum akan berubah sepenuhnya. Ini menjadikan checksum berguna untuk dua perkara:

  • Pengesahan integriti — adakah fail ini sampai tanpa kerosakan atau gangguan?
  • Identiti — adakah fail (atau sebahagian data) yang tepat ini sama dengan salinan lain?

Apabila anda memuat turun perisian dari laman web rasmi, halaman muat turun selalunya menunjukkan hash MD5 atau SHA-256. Selepas memuat turun, anda mengira hash fail tempatan anda dan bandingkan. Jika ia sepadan, fail tersebut adalah utuh.

Bagaimana Fungsi Hash Berfungsi

Fungsi hash kriptografi mengambil input dengan sebarang panjang dan menghasilkan digest berjangka tetap. Empat sifat menentukan fungsi hash yang baik:

  • Deterministik — input yang sama sentiasa menghasilkan output yang sama
  • Satu hala — anda tidak boleh membalikkan hash kembali ke input asal (dalam masa yang munasabah)
  • Kesan rantaian (Avalanche effect) — mengubah satu aksara dalam input akan mengubah hampir separuh daripada bit output
  • Rintang perlanggaran (Collision-resistant) — ia haruslah mustahil dari segi pengiraan untuk mencari dua input berbeza yang menghasilkan hash yang sama
Contoh — kesan rantaian SHA-256:
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("Hello") = 185f8db32921bd46d35e3a1a4e9a9b9c6a7e6a7d2d2c4e9d... (berbeza sepenuhnya)

MD5 — Pantas, Biasa, dan Rosak untuk Keselamatan

MD5 (Message Digest Algorithm 5) menghasilkan digest 128-bit (32 aksara hex). Ia direka pada tahun 1991 dan menjadi algoritma checksum lalai di internet selama kira-kira dua dekad.

Di mana MD5 masih boleh diterima:

  • Semakan integriti bukan keselamatan — mengesahkan pemindahan fail besar tidak rosak semasa transit
  • Deduping (Deduplication) — menyemak sama ada dua fail adalah identikal (sebagai pra-semakan pantas sebelum perbandingan bait-ke-bait)
  • Kunci cache dan ETags di mana serangan perlanggaran bukan satu kebimbangan

Di mana MD5 tidak boleh diterima:

  • Penyimpanan kata laluan — MD5 sangat pantas, yang menjadikan serangan brute-force melalui GPU sangat mudah. Berbilion hash MD5 setiap saat boleh dicapai dengan perkakasan pengguna.
  • Tandatangan digital — serangan perlanggaran MD5 telah dibuktikan dalam praktikal. Dua fail berbeza boleh dicipta untuk mempunyai hash MD5 yang sama.
  • Cap jari sijil (Certificate fingerprints) — isu perlanggaran yang sama terpakai.
MD5 untuk kata laluan adalah kerentanan kritikal. Jika anda menemui md5($password) dalam kod lama, gantikannya dengan password_hash() dalam PHP atau bcrypt/Argon2 dalam mana-mana bahasa. MD5 bukan algoritma hashing kata laluan — ia tidak pernah direka untuk menjadi perlahan, dan kelembapan adalah apa yang menjadikan penghasilan hash kata laluan selamat.

SHA-1 — Tidak Lagi Digalakkan (Deprecated)

SHA-1 menghasilkan digest 160-bit (40 aksara hex). Ia menggantikan MD5 sebagai algoritma yang disyorkan pada akhir 1990-an dan digunakan secara meluas dalam sijil SSL/TLS, sistem kawalan versi, dan semakan integriti fail.

Pada tahun 2017, pasukan Project Zero Google menunjukkan perlanggaran SHA-1 praktikal pertama (serangan "SHAttered"), yang memerlukan pengiraan setara kira-kira 6,500 tahun CPU. Pelayar utama dan pihak berkuasa sijil berhenti menerima sijil SHA-1 pada tahun 2017. Git masih menggunakan SHA-1 secara dalaman untuk hash commit, tetapi mereka sedang dalam proses berpindah ke SHA-256 sebagai alternatif pilihan.

Untuk aplikasi baharu, jangan gunakan SHA-1. Gunakan SHA-256 atau SHA-512 sebagai ganti.

SHA-256 — Piawaian Semasa

SHA-256 adalah sebahagian daripada keluarga SHA-2 yang direka oleh NSA dan diterbitkan pada tahun 2001. Ia menghasilkan digest 256-bit (64 aksara hex). Setakat hari ini, tiada serangan perlanggaran praktikal wujud terhadap SHA-256.

Gunakan SHA-256 untuk:

  • Pengesahan integriti fail (muat turun perisian, sandaran)
  • Tandatangan digital (sijil TLS, menandatangani kod)
  • Token pengesahan berasaskan HMAC (HMAC-SHA256)
  • Blockchain dan mata wang kripto (Bitcoin menggunakan double SHA-256)
  • Hash commit Git dalam mod SHA-256
  • Tandatangan JWT (JSON Web Token) apabila menggunakan HS256 atau RS256

SHA-256 adalah pilihan lalai yang tepat untuk hampir setiap aplikasi yang memerlukan hash yang selamat. Apabila ragu-ragu, gunakan SHA-256.

SHA-512 — Apabila Anda Memerlukan Lebih Banyak

SHA-512 menghasilkan digest 512-bit (128 aksara hex). Ia adalah sebahagian daripada keluarga SHA-2 yang sama dan sama keselamatannya. Perbezaan praktikal utama:

  • Pada pemproses 64-bit, SHA-512 sebenarnya boleh menjadi lebih pantas daripada SHA-256 kerana algoritma tersebut dioptimumkan untuk saiz perkataan 64-bit
  • Pada sistem dan perkakasan 32-bit, SHA-256 adalah lebih pantas
  • SHA-512 mempunyai output yang lebih besar, yang bermaksud penyimpanan dan penghantaran yang lebih panjang

Gunakan SHA-512 apabila aplikasi memerlukan digest yang lebih besar atau apabila anda menggunakan perkakasan di mana SHA-512 mempunyai kelebihan prestasi. Untuk kebanyakan aplikasi web, SHA-256 sudah mencukupi.

Nota Tentang Hashing Kata Laluan

Tiada satu pun algoritma di atas yang harus digunakan secara langsung untuk penyimpanan kata laluan. MD5, SHA-1, SHA-256, dan SHA-512 kesemuanya direka untuk menjadi pantas — dan pantas adalah sesuatu yang salah untuk kata laluan.

Penghasilan hash kata laluan perlu menjadi sengaja perlahan, supaya pangkalan data yang dicuri tidak dapat dikrak dengan cepat. Gunakan algoritma penghasilan hash kata lalangan khusus:

  • bcrypt — telah menjadi piawaian untuk lebih 20 tahun, disokong dalam hampir setiap bahasa
  • Argon2 (khususnya Argon2id) — pemenang Pertandingan Penghasilan Hash Kata Laluan (2015), disyorkan untuk aplikasi baharu
  • scrypt — jenis memory-hard, juga pilihan yang kuat

Dalam PHP: password_hash($password, PASSWORD_ARGON2ID). Dalam Node.js: gunakan pakej bcryptjs atau argon2. Ini mengendalikan penjanaan salt dan penyelarasan faktor kerja secara automatik.

Bagaimana Cara Mengesahkan Checksum Fail

Apabila anda memuat turun perisian dan laman web menyediakan hash SHA-256:

Pada macOS / Linux:
shasum -a 256 downloaded-file.zip
# bandingkan output dengan hash rasmi
Pada Windows (PowerShell):
Get-FileHash downloaded-file.zip -Algorithm SHA256

Sebagai alternatif, gunakan Penjana Hash kami untuk menampal kandungan fail atau teks dan mengira hash MD5, SHA-1, SHA-256, atau SHA-512 secara terus di dalam pelayar anda — tiada apa yang dihantar ke pelayan.

Janakan MD5, SHA-256 dan Lain-lain

Kira mana-mana hash (MD5, SHA-1, SHA-256, SHA-512) daripada teks atau kandungan fail dalam pelayar anda — tanpa muat naik, tanpa pelayan.