Storing passwords safely · Menyimpan kata sandi dengan aman
The big rule: never store plain passwords
- If a website stores your password as plain text and gets hacked, every password is stolen instantly.
- Instead, sites store a hash — a scrambled fingerprint that cannot be reversed back into the password.
Aturan besar: jangan pernah simpan kata sandi teks biasa
- Jika sebuah situs web menyimpan kata sandi Anda sebagai teks biasa dan diretas, semua kata sandi dicuri seketika.
- Sebaliknya, situs web menyimpan hash — sidik jari acak yang tidak dapat dikembalikan menjadi kata sandi.
What is a hash?
- A hash function turns any input into a fixed-length string. The same input always gives the same hash.
- It is one-way: easy to compute forwards, practically impossible to reverse.
- When you log in, the site hashes what you typed and compares it to the stored hash — it only ever stores the hash, never your actual password.
Apa itu hash?
- Fungsi hash mengubah input apa pun menjadi string berpanjang tetap. Input yang sama selalu menghasilkan hash yang sama.
- Ini bersifat satu arah: mudah dihitung maju, secara praktis mustahil untuk dikembalikan.
- Saat Anda login, situs web melakukan hashing pada apa yang Anda ketik dan membandingkannya dengan hash yang disimpan — ia hanya menyimpan hash, never kata sandi asli Anda.
import hashlib
print(hashlib.sha256(b"hello").hexdigest())
Add salt
- If two users pick the same password, their hashes match — a clue for attackers.
- A salt is a random string added before hashing, so identical passwords get different hashes.
- It also defeats pre-computed "rainbow table" attacks. Always salt.
Tambahkan salt
- Jika dua pengguna memilih kata sandi yang sama, hash mereka cocok — petunjuk bagi penyerang.
- Salt adalah string acak yang ditambahkan sebelum hashing, sehingga kata sandi identik menghasilkan hash yang berbeda.
- Salt juga mencegah serangan "rainbow table" yang sudah diprakalkulasi. Selalu gunakan salt.
Your turn
- Hash
salt + passwordwith SHA-256. The check confirms you produced the correct 64-character digest.
Covers: A-Level 6.1, 17.1 (encryption/hashing).
Giliran Anda
- Hash
salt + passworddengan SHA-256. Pengecek mengonfirmasi Anda telah menghasilkan digest 64 karakter yang benar.
Mencakup: A-Level 6.1, 17.1 (enkripsi/hash).
Common mistakes
- Never store passwords in plain text.
- Store a salted hash, not the password itself.
Kesalahan umum
- Jangan pernah simpan kata sandi dalam teks biasa.
- Simpan hash yang disalt, bukan kata sandinya sendiri.
Store the hash, not the password · Simpan hash, bukan kata sandi
Sites store a hash; a tiny change gives a totally different digest. · Situs menyimpan hash; perubahan kecil menghasilkan digest yang sepenuhnya berbeda.
Never store a plain password — store its hash. Using hashlib, hash the salt + password with SHA-256 and put the hex digest in a variable called digest. · Jangan pernah simpan kata sandi biasa — simpan hash-nya. Menggunakan hashlib, hash garam + kata sandi dengan SHA-256 dan masukkan digest heksadesimal ke dalam variabel bernama digest.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.
Now be the login system. The database holds a salt and a stored digest — never the password. Hash salt + attempt with SHA-256 and print welcome if it matches stored, else denied. · Sekarang jadilah sistem login. Database menyimpan salt dan digest stored — jangan pernah kata sandinya. Hash salt + attempt dengan SHA-256 dan cetak welcome jika cocok dengan stored, jika tidak cetak denied.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.