Pendahuluan
Keamanan password merupakan hal yang sangat penting dalam sebuah sistem, terutama pada aplikasi web. Banyak kasus kebocoran data terjadi karena password disimpan dalam bentuk asli (plaintext). Jika database bocor, maka semua akun pengguna akan langsung terancam.
Untuk mengatasi hal ini, digunakan teknik hashing, yaitu mengubah password menjadi bentuk lain yang tidak bisa dikembalikan ke bentuk semula. Namun, hashing saja belum cukup. Dibutuhkan teknik tambahan yaitu salt untuk meningkatkan keamanan.
Artikel ini akan membahas bagaimana hashing dengan salt bekerja dan bagaimana cara mengimplementasikannya.
Konsep Dasar Hashing
Hashing adalah proses mengubah data (misalnya password) menjadi string acak dengan panjang tertentu.
Beberapa karakteristik hashing:
- Tidak bisa dikembalikan ke bentuk semula (one-way)
- Input yang sama menghasilkan output yang sama
- Panjang output selalu tetap
Contoh algoritma hashing:
- MD5 → sudah tidak aman
- SHA-1 → mulai ditinggalkan
- SHA-256 → lebih aman dan masih digunakan
Kelemahan Hashing Tanpa Salt
Jika hanya menggunakan hashing biasa, masih ada beberapa celah keamanan, seperti:
- Brute force attack → mencoba semua kemungkinan password
- Dictionary attack → menggunakan daftar password umum
- Rainbow table attack → menggunakan tabel hash yang sudah dibuat sebelumnya
Masalah utamanya adalah:
Jika dua user menggunakan password yang sama, maka hash yang dihasilkan juga akan sama.
Hal ini memudahkan attacker untuk mengenali password yang sama di database.
Konsep Salt dalam Hashing
Salt adalah nilai tambahan (biasanya berupa string acak) yang digabungkan dengan password sebelum proses hashing.
Contoh:
- Password:
admin123 - Salt:
XYZ - Hasil:
hash(admin123XYZ)
Keuntungan menggunakan salt:
- Password yang sama akan menghasilkan hash yang berbeda
- Lebih sulit diserang menggunakan rainbow table
Implementasi Hashing dengan Salt
Metode Manual (Konsep Dasar)
Cara paling sederhana adalah menggabungkan password dan salt:
Implementasi di Linux
Menggunakan sha256sum:
Menggunakan openssl:
Implementasi dengan Python
Contoh sederhana menggunakan Python:

password = “admin123”
salt = “SALT123”
hashed = hashlib.sha256((salt + password).encode()).hexdigest()
print(“Hash:”, hashed)
Penjelasan:
salt + password→ digabung terlebih dahulusha256()→ proses hashinghexdigest()→ hasil dalam bentuk string
Best Practice dalam Penggunaan Salt
Agar lebih aman, penggunaan salt harus mengikuti beberapa aturan:
- Gunakan salt yang unik untuk setiap user
- Gunakan salt yang random
- Jangan hardcode salt di kode program
- Simpan salt bersama hash di database
Selain itu, gunakan algoritma modern seperti:
- bcrypt
- argon2
Analisis Keamanan
Penggunaan salt memberikan beberapa keuntungan:
Mencegah rainbow table attack
Membuat hash lebih unik
Meningkatkan keamanan database
Namun, salt juga memiliki keterbatasan:
- Tidak sepenuhnya mencegah brute force
- Masih bisa diserang jika password lemah
Studi Kasus Sederhana
Misalnya ada dua user:
| User | Password |
|---|---|
| A | admin123 |
| B | admin123 |
Tanpa salt:
- Hash A = Hash B (sama)
Dengan salt:
- Hash A ≠Hash B (berbeda)
Ini membuat attacker lebih sulit menganalisis data.
Kesimpulan
Hashing adalah langkah penting dalam mengamankan password, tetapi tidak cukup jika digunakan sendiri. Dengan menambahkan salt, keamanan sistem dapat meningkat secara signifikan.
Penggunaan salt membuat hash menjadi unik dan lebih sulit untuk diserang. Oleh karena itu, setiap sistem modern sebaiknya menerapkan hashing + salt untuk melindungi data pengguna.
Penutup
Dalam dunia cybersecurity, teknik sederhana seperti hashing + salt bisa menjadi perbedaan antara sistem yang aman dan yang mudah diretas.
Kalau kamu ingin meningkatkan keamanan lebih lanjut, gunakan kombinasi:
- Hashing + salt + algoritma modern (bcrypt / argon2)








