Encoding, Hashing, Encryption — Bedanya Apa, dan Kapan Dipakai?

(Berdasarkan video “Encryption, Hashing, Encoding — What’s Really The Difference?” — Monis Yousuf, 28 Jul 2025)

Banyak praktisi software — bahkan yang berpengalaman — pernah mencampuradukkan istilah encoding, hashing, dan encryption. Padahal ketiganya berbeda tujuan, sifat, dan implikasinya. Artikel ini menjelaskan perbedaan inti, bagaimana masing-masing bekerja, contoh nyata, serta praktik aman yang perlu Anda tahu jika bekerja di bidang pengembangan perangkat lunak atau keamanan.


Inti perbedaan singkat

  • Encoding = mengubah representasi data agar cocok untuk penyimpanan/transmisi (bisa dibalik/ reversible). Tujuan: compatibility, readability, efficiency — bukan keamanan.
  • Hashing = mengubah data menjadi nilai tetap melalui fungsi satu-arah (irreversible). Tujuan: verifikasi integritas, penyimpanan password (tanpa mengungkap aslinya).
  • Encryption = mengubah data menjadi bentuk tak terbaca yang hanya bisa dikembalikan (dekripsi) oleh pihak yang memegang kunci. Tujuan: kerahasiaan.

Di bawah ini kita uraikan lebih rinci disertai contoh praktis.


1) Encoding — representasi data yang bisa dikembalikan

Pengertian: transformasi data dari satu bentuk ke bentuk lain yang disetujui/diizinkan sistem penerima, dan dapat dibalik tanpa informasi tambahan.
Contoh / aplikasi nyata:

  • URL encoding (mis. spasi → %20, ?%3F) agar URL hanya berisi karakter valid.
  • Base64 untuk menyematkan gambar kecil di HTML/CSS sehingga menghindari panggilan jaringan tambahan.
  • Hexadecimal untuk mewakili warna RGB (#FF0000) atau data biner dalam format yang ringkas.
    Sifat penting: reversible, bukan untuk keamanan. Siapa pun yang melihat %20 bisa mendecode menjadi spasi.

Contoh kode (Python):

import base64
text = "hello"
encoded = base64.b64encode(text.encode()).decode()
# encoded -> "aGVsbG8="

2) Hashing — satu arah, untuk verifikasi & identitas data

Pengertian: proses matematis yang mengubah input (ukuran beragam) menjadi fixed-length string (hash). Hash tidak bisa di-reverse ke input asli.
Sifat utama hashing:

  • One-way (tidak dapat dibalik).
  • Deterministik (input sama → hash sama).
  • Fixed length (panjang hash tetap, terlepas input panjangnya).
  • Peka terhadap perubahan kecil (perubahan sedikit pada input → hash sangat berbeda).

Kegunaan praktis:

  • Menyimpan password: server menyimpan hash password, bukan plaintext. Saat login, password yang dimasukkan di-hash dan dibandingkan.
  • Cek integritas file: setelah download, hitung hash file; jika berbeda dari hash sumber → file korup/diubah.
  • Data structures: hash table, deduplikasi data, dsb.

Catatan keamanan praktis:
Untuk password, selalu gunakan salt (random per-user) + algoritma hashing yang khusus untuk password (bcrypt, Argon2, scrypt) agar tahan terhadap serangan brute-force dan rainbow table.

Contoh kode hashing (Python, SHA-256):

import hashlib
pw = "rahasia123"
h = hashlib.sha256(pw.encode()).hexdigest()
# h -> string hex panjang tetap

3) Encryption — menjadikan data rahasia, bisa didekripsi dengan kunci

Pengertian: proses mengubah data menjadi bentuk tak terbaca (ciphertext) yang hanya dapat dikembalikan ke bentuk aslinya (plaintext) jika seseorang memiliki kunci yang benar. Encryption adalah two-way transform (bisa dienkripsi dan didekripsi).
Jenis utama:

  • Symmetric (kunci sama untuk enkripsi/dekripsi) — contoh: AES. Cocok untuk komunikasi antara dua sistem yang telah berbagi kunci.
  • Asymmetric (kunci publik/publik dan privat/private) — contoh: RSA. Kunci publik untuk enkripsi, kunci privat untuk dekripsi; dasar dari TLS/HTTPS.

Contoh historis sederhana: Caesar cipher (shift setiap huruf sebanyak N) — illustrate konsep kunci (N). Mudah dipecahkan sekarang, tapi menjelaskan ide kunci enkripsi.

Aplikasi nyata modern:

  • End-to-end messaging (mis. WhatsApp) — pesan dienkripsi di perangkat pengirim, hanya penerima dengan kunci yang sesuai yang bisa membaca.
  • HTTPS / TLS — enkripsi komunikasi web antara browser dan server.
  • Enkripsi disk / file — melindungi data apabila perangkat hilang atau dicuri.

Sifat penting: reversible hanya jika Anda punya kunci yang benar; tujuan utama: confidentiality.


Ringkasan perbandingan (tabel singkat)

AspekEncodingHashingEncryption
Reversible?YaTidakYa (dengan kunci)
Tujuan utamaRepresentasi / transmisiVerifikasi / identitasKerahasiaan
ContohURL-encode, Base64, hexSHA-256, bcryptAES, RSA
Cocok untuk menyimpan password?TidakYa (dengan salt & algoritma khusus)Tidak ideal sebagai satu-satunya metode
Digunakan untuk integritas file?Tidak spesifikYaBisa (bersamaan dg MAC)

Kapan menggunakan masing-masing? (praktis)

  • Butuh memasukkan data ke URL / embed asset → gunakan encoding.
  • Menyimpan password pengguna → jangan simpan plaintext; gunakan hashing (bcrypt/Argon2) + salt.
  • Melindungi isi yang hanya boleh dibaca pihak tertentu → gunakan encryption (susunlah manajemen kunci yang aman).
  • Cek file download / integritas → bandingkan hash (checksum).
  • Kirim pesan pribadi yang tidak boleh dibaca pihak lain → end-to-end encryption.

Kesalahan umum & praktik aman

  • Menganggap encoding = security → Salah besar. Encoding bukan proteksi. Jangan taruh data sensitif hanya dengan base64.
  • Hashing password tanpa salt → rentan terhadap rainbow table. Selalu gunakan salt unik per pengguna dan algoritma hashing khusus password.
  • Menggunakan enkripsi tanpa manajemen kunci → enkripsi berguna hanya jika kunci dijaga dengan benar; kunci bocor → data bocor.
  • Mencampur istilah dalam dokumentasi → bisa menyebabkan konfigurasi yang salah dan celah keamanan.

Contoh singkat untuk developer — cheat sheet

  • URL: Hello World? → URL encode → Hello%20World%3F.
  • Base64: helloaGVsbG8=.
  • Hash password (konsep): hash = bcrypt(password + salt) → simpan salt + hash.
  • Enkripsi simetris (konsep): ciphertext = AES_encrypt(plaintext, key) → simpan/gunakan key dengan aman.

Kesimpulan

  • Encoding untuk representasi/transmisi, bisa di-decode kapan saja.
  • Hashing untuk verifikasi/identitas satu arah (ideal untuk password dan checksum).
  • Encryption untuk kerahasiaan dua-arah yang mensyaratkan pengelolaan kunci.

Memahami perbedaan ini bukan hanya soal istilah — ini soal memilih alat yang tepat demi keamanan, keandalan, dan kinerja sistem Anda. Salah pilih (mis. menggunakan encoding sebagai pengaman) bisa berakibat kebocoran data dan kerentanan serius.


Sumber

  • Video: “Encryption, Hashing, Encoding — What’s Really The Difference?”, Monis Yousuf — YouTube (28 Juli 2025).
  • Contoh-contoh dan praktik disesuaikan dengan praktik umum industri (encoding: URL/base64; hashing: SHA-family, bcrypt/Argon2 untuk password; encryption: AES, RSA untuk ilustrasi).
saiful

Share
Published by
saiful

Recent Posts

Dasar Komputer Science

Ilmu komputer teoretis (theoretical computer science) memiliki hubungan erat dengan matematika karena pemrograman menggunakan algoritma,…

2 months ago

Seni Berbicara dan Mendengarkan ala Julian Treasure

https://www.youtube.com/watch?v=SuaxadRqJpM Pengantar Suara manusia adalah instrumen yang kita semua mainkan — sekaligus alat paling kuat…

6 months ago

Apakah Dunia Menuju Perang Dunia III?

https://www.youtube.com/watch?v=Ew59SKy181Y Analisis Heni Ozi Cukier mengungkap empat dimensi — sosial, ekonomi, politik, dan militer —…

6 months ago

Semua Fisika dalam 14 Menit: Ringkasan Konsep Inti

https://www.youtube.com/watch?v=ZAqIoDhornk Ringkasan padat dari konsep-konsep utama fisika—dari Newton hingga mekanika kuantum—dengan contoh sehari-hari dan makna…

6 months ago

Belajar Membaca Bahasa Rusia dalam 9 Menit

https://www.youtube.com/watch?v=olQh39MoJsQ Cara Cepat Mengenal Huruf Sirilik dan Logika Bahasa Rusia untuk Pemula Pendahuluan: Bahasa Asing…

6 months ago

Korelasi Iman, Ilmu, dan Takwa Menurut UAH

https://www.youtube.com/watch?v=UJGsfLa8dmE 1. Korelasi antara Iman, Ilmu, dan Takwa UAH menjelaskan bahwa iman dan ilmu merupakan…

6 months ago