Cara kerja checksum
Nomor kartu, IBAN, ID pajak, dan alamat kripto semuanya memiliki satu atau dua digit tambahan yang tersembunyi, dihitung dari digit lainnya. Jika salah mengetik satu karakter saja, perhitungannya tidak akan cocok — inilah mengapa validator dapat segera menandai kesalahan ketik secara offline, tanpa perlu bertanya kepada bank atau blockchain.
Apa itu checksum?
Checksum (atau digit cek) merupakan redundansi yang disengaja. Saat sebuah angka dikeluarkan, satu atau lebih digitnya tidak dipilih secara acak: digit tersebut dihitung dari digit lainnya menggunakan rumus tertentu. Siapa pun yang mengetahui rumus tersebut dapat menghitung ulang digit tersebut dan membandingkannya. Jika hasilnya sama, angka tersebut konsisten secara internal. Jika tidak, berarti ada kesalahan ketik, kesalahan baca, atau kerusakan data.
Itulah semua yang dijanjikan oleh checksum. Checksum tidak memberikan informasi apakah akun tersebut ada, siapa pemiliknya, atau apa yang dimilikinya — hal ini selalu ditekankan oleh setiap validator di situs ini, karena kedua hal tersebut sering disalahartikan.
Contoh perhitungan 1 — Luhn, algoritma nomor kartu
Luhn digunakan oleh Visa, Mastercard, dan sebagian besar kartu pembayaran lainnya. Ambil contoh klasik 7992 7398 713. Mulai dari digit paling kanan, kalikan setiap digit ke-2 dengan 2; jika hasilnya berupa angka dua digit, jumlahkan digit-digit tersebut. Kemudian jumlahkan semua hasilnya.
| Digit | Posisi dari kanan | Digandakan? | Dihitung sebagai |
|---|---|---|---|
3 | Digit cek | — | 3 |
1 | Urutan ke-2 dari kanan | 1 × 2 = 2 | 2 |
7 | Urutan ke-3 | — | 7 |
8 | Urutan ke-4 | 8 × 2 = 16 → 1 + 6 | 7 |
9 | Urutan ke-5 | — | 9 |
3 | Urutan ke-6 | 3 × 2 = 6 | 6 |
7 | Urutan ke-7 | — | 7 |
2 | Urutan ke-8 | 2 × 2 = 4 | 4 |
9 | Urutan ke-9 | — | 9 |
9 | Urutan ke-10 | 9 × 2 = 18 → 1 + 8 | 9 |
7 | ke-11 | — | 7 |
Kolom di sebelah kanan menghasilkan total 3 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 7 = 70. Angka tujuh puluh habis dibagi sepuluh, sehingga nomor tersebut valid. Ubah satu digit saja dan totalnya tidak akan menjadi kelipatan sepuluh lagi. Cobalah pada Validator Kartu Kredit — alat ini menjalankan perhitungan yang persis sama di perangkat Anda.
Contoh perhitungan 2 — penjumlahan berbobot (ISBN-10)
Banyak nomor identitas nasional menggunakan penjumlahan berbobot: kalikan setiap digit dengan bobot tertentu, jumlahkan hasilnya lalu cek sisa pembagiannya. ISBN-10 merupakan ilustrasi yang paling jelas. Untuk 0-306-40615-2, bobotnya berkurang dari 10 hingga 1:
0×10 + 3×9 + 0×8 + 6×7 + 4×6 + 0×5 + 6×4 + 1×3 + 5×2 + 2×1 = 132
Angka 132 tepat sama dengan 11 × 12, sehingga sisa pembagian modulo 11 adalah nol dan ISBN tersebut valid. CPF di Brasil, PESEL di Polandia, serta puluhan identifikasi lainnya mengikuti pola yang sama dengan bobot dan modulus masing-masing — itulah sebabnya satu Validator ID Massal dapat memeriksa ribuan nomor tersebut dalam satu detik.
Contoh perhitungan 3 — IBAN dan mod 97
Nomor rekening bank internasional menggunakan standar ISO 7064 mod 97-10, skema yang lebih kuat dengan dua digit cek. Ambil contoh standar GB82 WEST 1234 5698 7654 32:
- Periksa panjangnya sesuai negara: IBAN Inggris terdiri dari 22 karakter. ✓
- Pindahkan empat karakter pertama ke akhir:
WEST12345698765432GB82. - Ganti setiap huruf dengan dua digit (A = 10 … Z = 35): W→32, E→14, S→28, T→29, G→16, B→11, menghasilkan
3214282912345698765432161182. - Bagilah angka tersebut dengan 97. Sisa pembagiannya harus tepat 1 — dan memang demikian.
Karena 97 merupakan bilangan prima dan lebih besar dari kombinasi dua digit apa pun, mod 97 dapat mendeteksi setiap kesalahan satu karakter maupun kesalahan transposisi; hanya sekitar satu string acak dari 97 yang bisa lolos secara kebetulan. Validator IBAN menampilkan apakah setiap tahap tersebut lolos atau gagal.
Alamat kripto: checksum dibuat dari hash
Alamat Bitcoin dan Ethereum memiliki tingkat keamanan yang lebih tinggi, karena kesalahan ketik akan mengirimkan uang ke alamat yang tidak valid secara permanen. Alamat Bitcoin lama (1…, 3…) menggunakan Base58Check: data alamat diproses melalui SHA-256 dua kali dan empat byte pertama dari hasilnya ditambahkan sebagai checksum. Satu karakter yang salah saja dapat mengubah hash secara total, sehingga peluang kesalahan ketik lolos sangat kecil, sekitar satu dari empat miliar. Alamat bc1… yang lebih baru menggunakan Bech32 atau Bech32m, yaitu kode koreksi kesalahan yang dapat mendeteksi setiap kesalahan pada hingga empat karakter. EIP-55 pada Ethereum menyembunyikan checksum dalam pola huruf kapital dan non-kapital.
Alat Validator Alamat Bitcoin dan Validator Alamat Ethereum menerapkan algoritma ini di dalam browser dan memverifikasinya terhadap vektor uji resmi setiap kali halaman dimuat.
Gambaran singkat skema
| Skema | Digunakan oleh | Dapat mendeteksi | Peluang kesalahan acak lolos |
|---|---|---|---|
| Luhn (mod 10) | Kartu kredit & debit, IMEI, banyak ID nasional | Setiap kesalahan satu digit dan sebagian besar pertukaran karakter yang berdekatan | Sekitar 1 dari 10 |
| ISO 7064 mod 97-10 | IBAN, beberapa nomor pajak dan perusahaan | Setiap kesalahan tunggal dan setiap transposisi | Sekitar 1 dari 97 |
| Jumlah terbobot, mod 10 atau 11 | ISBN-10, CPF Brasil, PESEL Polandia, dan banyak ID lainnya | Kesalahan tunggal dan sebagian besar transposisi | Sekitar 1 dari 10 atau 1 dari 11 |
| Base58Check (double SHA-256, 4 byte) | Alamat Bitcoin lama (1…, 3…) | Setiap kesalahan ketik, dengan probabilitas yang sangat tinggi | Sekitar 1 dari 4 miliar |
| Bech32 / Bech32m (kode BCH) | Alamat Bitcoin SegWit & Taproot (bc1…) | Dijamin: setiap kesalahan hanya memengaruhi maksimal 4 karakter | Di bawah 1 dari satu miliar |
| EIP-55 (pengejaan keccak-256) | Alamat Ethereum | Kesalahan ketik, akibat pola huruf kapital dan huruf kecil | Sangat rendah untuk input dengan huruf campuran |
Mengapa validator harus dijalankan di perangkat Anda?
Semua yang disebutkan di atas merupakan operasi aritmetika pada digit yang sudah Anda miliki. Tidak ada alasan bagi validator untuk mengirim nomor kartu, ID pajak, atau alamat dompet ke server — dan ada alasan yang sangat kuat untuk tidak melakukannya. Setiap validator di situs ini dijalankan secara lokal; daftar alat offline mengelompokkannya, dan panduan untuk memeriksa apakah suatu alat mengunggah data Anda menunjukkan cara mengonfirmasinya untuk situs apa pun dalam dua puluh detik.
FAQ
Apakah checksum yang valid berarti nomor tersebut nyata atau aktif?
Tidak. Checksum hanya membuktikan bahwa digit-digitnya konsisten secara internal — bahwa nomor tersebut mungkin ada. Checksum tidak dapat memberi tahu Anda apakah akun tersebut terbuka, siapa pemiliknya, atau berapa saldonya. Setiap validator di situs ini menyatakan hal tersebut di halaman masing-masing, karena perbedaan itu penting.
Seberapa besar kemungkinan angka yang salah tetap lolos?
Hal ini bergantung pada skema yang digunakan. Satu digit cek mod-10 memungkinkan sekitar 1 kesalahan acak dari 10 yang lolos; mod 97 pada IBAN memungkinkan sekitar 1 dari 97 kesalahan yang lolos; checksum Base58Check sepanjang 4 byte memungkinkan sekitar 1 dari 4 miliar kesalahan yang lolos. Sifat pentingnya adalah semua skema tersebut dapat mendeteksi kesalahan umum manusia — satu digit yang salah, dua digit yang tertukar.
Mengapa beberapa identifikasi sama sekali tidak memiliki checksum?
Skema yang lebih lama atau lebih sederhana dirancang untuk dicari di dalam registri bukan untuk diverifikasi secara offline, dan beberapa sistem penomoran memang sudah ada sebelum praktik ini berkembang. Untuk kasus tersebut, validator hanya bisa memeriksa panjang dan formatnya.
Apakah aman menempelkan nomor kartu atau KTP saya ke dalam validator?
Hanya jika proses validasi berjalan di perangkat Anda. Checksum merupakan perhitungan aritmetika atas digit yang sudah Anda miliki, sehingga tidak ada alasan sah bagi validator untuk mengirimkannya ke server. Anda dapat mengonfirmasi apakah sebuah alat beroperasi secara lokal dengan uji mode pesawat yang dijelaskan dalam panduan kami untuk memeriksa apakah alat tersebut mengunggah data Anda.
Apa perbedaan antara checksum, hash, dan enkripsi?
Checksum merupakan digit cek pendek yang dirancang untuk mendeteksi kesalahan ketik yang tidak disengaja. Hash kriptografis merupakan 'sidik jari' yang panjang sehingga bahkan perubahan yang disengaja pun dapat dideteksi dan data asli tidak dapat dipulihkan. Enkripsi mengubah data sehingga hanya dapat dibaca dengan kunci. Base58Check menggunakan hash untuk membentuk checksum-nya, itulah sebabnya sangat sulit untuk menipunya secara tidak sengaja.