Belajar dengan membaca secara berurutan

hashlib — Hitung Nilai Hash untuk Data

Pelajari hash 64 karakter hashlib.sha256, 3 sifat determinisme / avalanche / satu arah, deteksi tampering, dan alasan password pakai bcrypt / argon2 lewat contoh.

hashlib adalah modul standard library yang menghitung nilai hash dengan panjang tetap dari urutan byte apa pun. Algoritma utama SHA-256 mengembalikan string hex 64 karakter = 256-bit, dan banyak dipakai di mana pun kamu ingin memastikan "apakah isinya sama?" — integrity check file, signing API, ID commit Git, dan sejenisnya.

Tidak seperti pickle dan base64, hashlib adalah konversi satu arah — kamu tidak bisa memulihkan input dari output. Ingat bahwa ini bukan untuk "simpan dan pulihkan" tetapi untuk "beritahu saja apakah dua input sama atau berbeda".

pickle / base64 vs hashlib
pickle / base64konversi dua arahobjek ⇄ bytesbytes ⇄ ASCIIsimpan dan pulihkanhashlibkonversi satu arahbytes → hashtidak bisa dibalikputus sama vs bedakegunaankegunaan
pickle / base64 adalah konversi dua arah yang reversible dipakai untuk "simpan dan pulihkan" dan "konversi transport". hashlib adalah konversi satu arah yang non-reversible untuk situasi di mana kamu hanya perlu menentukan apakah dua input sama atau berbeda. Use case-nya berbeda mendasar — jangan dicampur.

SHA-256 — Hash Hex 64 Karakter dengan Tiga Properti

Empat kegunaan tipikal hashlib
integritas filebandingkan sha256sumID commit Githash seluruh treegenerasi cache keyhash input sebagai keysigning API (HMAC)cegah tampering request
Memverifikasi integritas download / ID commit Git / menggenerasi cache key / signing request API (HMAC). Benang merahnya adalah menentukan "apakah isinya sama?" via hash dengan panjang tetap — tidak reversible, jadi tidak bisa menggantikan penyimpanan.
Tiga properti fungsi hash
input ASHA-256hash X(64 karakter hex)input A (lagi)SHA-256hash X(selalu identik)input A' (1 char beda)SHA-256hash Y(benar-benar berbeda)
Determinisme (input sama → output sama), avalanche effect (satu bit beda → output benar-benar berbeda), dan one-way (tidak bisa memulihkan input dari output). SHA-256 selalu mengeluarkan string hex 64 karakter, dipakai untuk deteksi tampering dan integrity check.
Method / AlgoritmaPanjang bitKegunaan
hashlib.sha256(b)256 bit (64 karakter hex)integritas file / signing API (direkomendasikan)
hashlib.sha512(b)512 bit (128 karakter hex)ketika kamu ingin hash yang lebih panjang
hashlib.md5(b)128 bit (32 karakter hex)collision attack ada — jangan dipakai untuk kode baru
.hexdigest()dapatkan hash sebagai string hex
.digest()dapatkan hash sebagai bytes mentah

Jangan pakai hashlib saja untuk menyimpan password

Jika kamu menyimpan password pengguna dengan hanya hashing dengan sha256 atau sejenisnya, mereka menjadi rentan terhadap serangan lookup terkomputasi sebelumnya (rainbow table). Kamu dapat bertahan dari ini dengan library khusus yang membangun salt + key stretchingbcrypt / argon2 / passlib. hashlib cocok untuk skenario "apakah input sama?" seperti integrity check file dan signing API.

Hitung SHA-256 dari "Hello, Python!" dan konfirmasi outputnya selalu berupa string hex 64 karakter.

① Import hashlib dan konversi string "Hello, Python!" ke bytes dengan UTF-8.

② Dapatkan SHA-256 dari bytes tersebut sebagai string hex dengan hashlib.sha256(...).hexdigest().

③ Cetak panjang hash sebagai Panjang SHA-256: ◯ (seharusnya 64).

Python Editor

Jalankan kode untuk melihat output

Verifikasi Determinisme dan Avalanche Effect

Di antara sifat-sifat fungsi hash, "input sama → output sama" (determinisme) dan "satu karakter beda → output benar-benar berbeda" (avalanche effect) dapat dikonfirmasi dengan membandingkan dua input yang sedikit berbeda. Kedua properti ini lah yang membuat hash berguna untuk integrity check file dan deteksi tampering.

Bandingkan hash dari Latihan 1 dengan nilai yang dihitung ulang dan nilai dengan karakter terakhir diubah.

① Ulangi langkah Latihan 1 untuk meletakkan SHA-256 dari "Hello, Python!" ke sha.

② Hash input yang sama lagi dan cek apakah sama dengan sha — cetak sebagai Sama saat hitung ulang: True / False.

③ Hitung hash dari bytes dengan ! diubah menjadi . di akhir dan konfirmasi berbeda dari sha — cetak sebagai Beda setelah 1 karakter: True / False.

Python Editor

Jalankan kode untuk melihat output
QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Berapa panjang string yang dikembalikan oleh hexdigest() dari SHA-256?

Soal 2Apa yang terjadi pada SHA-256 dari input yang sama?

Soal 3Bisakah kamu memulihkan input asli dari hash?

Soal 4Apa pilihan terbaik untuk menyimpan password pengguna?