Apakah hash sama dengan enkripsi?
Tidak. Enkripsi dapat didekripsi dengan kunci yang tepat; hash bersifat satu arah dan tidak bisa dibalik. "Mendekripsi hash" secara prinsip tidak mungkin.
Hasilkan hash MD5, SHA-1, SHA-256, SHA-512
Tidak untuk keamanan (kata sandi, autentikasi). Masih oke untuk deduplikasi dan kunci cache di mana collision dapat diterima.
Tidak. Enkripsi dapat didekripsi dengan kunci yang tepat; hash bersifat satu arah dan tidak bisa dibalik. "Mendekripsi hash" secara prinsip tidak mungkin.
Ya, fungsi hash bersifat deterministik (input sama → output sama). Satu spasi atau perbedaan huruf menghasilkan hash yang sama sekali berbeda (efek avalanche).
Fungsi hash mengubah data dengan panjang berapa pun menjadi string panjang tetap (digest) secara satu arah. MD5(128-bit), SHA-1(160-bit), SHA-256(256-bit), SHA-512(512-bit) adalah algoritma umum. Input yang sama selalu menghasilkan output yang sama, tapi tidak mungkin membalik dari output untuk mendapatkan input.
MD5 dan SHA-1 telah terbukti memiliki kerentanan collision attack (input berbeda menghasilkan hash sama), sehingga tidak lagi direkomendasikan untuk keamanan. SHA-256 dan SHA-512 masih aman untuk hashing password, verifikasi integritas file, dan tanda tangan digital. Untuk hashing password, gunakan bcrypt atau Argon2 yang dirancang sengaja untuk lambat.
Setelah mengunduh, bandingkan SHA-256 checksum dengan nilai resmi untuk memverifikasi file tidak diubah. Metode ini umum pada ISO Linux dan installer software. "Efek avalanche" berarti perubahan 1 bit pun menghasilkan hash yang sama sekali berbeda.
SHA-256 terlalu cepat — itulah masalahnya. GPU modern dapat menghitung miliaran hash per detik, membuat brute-force attack mudah untuk password umum. bcrypt dan Argon2 dirancang sengaja untuk lambat dan membutuhkan memori besar, serta menggunakan salt sehingga password yang sama menghasilkan hash berbeda.
Proof-of-Work Bitcoin mengharuskan penambang menemukan nonce agar SHA-256 ganda dimulai dengan sejumlah nol tertentu. Setiap blok juga berisi hash blok sebelumnya, membentuk rantai. Memodifikasi transaksi historis mengubah hash semua blok berikutnya, yang dapat dideteksi langsung oleh node mana pun.