Dalam praktiknya, ya, hash kriptografi identik berarti file-nya sama, selama file-file itu tidak dibuat oleh penyerang atau entitas jahat lainnya. Peluang tabrakan acak dengan fungsi hash kriptografi yang dirancang dengan baik sangat kecil sehingga dapat diabaikan dalam praktik dan tanpa adanya penyerang aktif.
Secara umum, bagaimanapun, tidak, kita tidak dapat mengatakan bahwa dua file arbitrer yang memiliki hash yang sama jelas berarti bahwa mereka identik.
Cara fungsi hash kriptografi bekerja adalah dengan mengambil input panjang arbitrer, dan menampilkan nilai panjang tetap yang dihitung dari input. Beberapa fungsi hash memiliki panjang output ganda untuk dipilih, tetapi outputnya sampai batas tertentu memiliki nilai panjang tetap. Nilai ini akan mencapai beberapa lusin byte; algoritma hash dengan nilai output terpanjang yang umum digunakan saat ini memiliki output 512-bit, dan output 512-bit adalah 64 byte.
Jika input ke fungsi hash lebih panjang dari output fungsi hash, beberapa kesetiaan harus dihilangkan untuk membuat input sesuai dengan output. Akibatnya, harus ada beberapa input dengan panjang lebih besar dari panjang output, yang menghasilkan output yang sama.
Mari kita ambil pekerja keras saat ini, SHA-256, sebagai contoh. Ini menghasilkan hash 256 bit, atau 32 byte. Jika Anda memiliki dua file yang panjangnya masing-masing tepat 32 byte, tetapi berbeda, ini harus (dengan asumsi tidak ada cacat dalam algoritma) hash ke nilai yang berbeda, tidak peduli isi file; dalam istilah matematika, hash adalah fungsi pemetaan 2 256 ruang input ke sebuah 2 256 ruang output, yang harus mungkin untuk melakukannya tanpa tabrakan. Namun, jika Anda memiliki dua file yang masing-masing berukuran 33 byte, harus ada beberapa kombinasi input yang memberikan nilai hash output 32-byte yang sama untuk kedua file tersebut, karena kami sekarang memetakan ruang input 2 264 ke ruang 2 256ruang keluaran; di sini, kita dapat dengan mudah melihat bahwa harus, rata-rata, ada 2 8 input untuk setiap output. Ambillah ini lebih lanjut, dan dengan file 64-byte harus ada 2 256 input untuk setiap output tunggal!
Fungsi hash kriptografi dirancang sedemikian rupa sehingga sulit secara komposisional untuk menyusun input yang memberikan output tertentu, atau menulis dua input yang memberikan output yang sama. Ini dikenal sebagai resistensi serangan preimage atau resistensi serangan tubrukan . Bukan tidak mungkin menemukan tabrakan ini; itu hanya dimaksudkan untuk menjadi sangat, sangat, sangat, sangat sulit. (Sedikit kasus khusus dari serangan tabrakan adalah serangan ulang tahun .)
Beberapa algoritma lebih baik daripada yang lain dalam melawan penyerang. MD5 umumnya dianggap benar-benar rusak akhir-akhir ini, tetapi terakhir saya melihat, itu masih memiliki resistensi preimage pertama yang cukup bagus . SHA-1 juga rusak secara efektif; serangan preimage telah diperlihatkan, tetapi membutuhkan kondisi khusus, meskipun tidak ada alasan untuk percaya bahwa itu akan terjadi tanpa batas waktu; seperti kata pepatah, serangan selalu menjadi lebih baik, mereka tidak pernah menjadi lebih buruk. SHA-256/384/512 saat ini masih diyakini aman untuk sebagian besar tujuan. Namun , jika Anda hanya tertarik untuk melihat apakah dua yang dibuat tidak jahat, validfile adalah sama, maka semua ini harus memadai, karena ruang input sudah cukup dibatasi sehingga Anda akan lebih tertarik pada tabrakan acak. Jika Anda memiliki alasan untuk meyakini bahwa file tersebut dibuat dengan cara jahat, maka Anda harus setidaknya menggunakan fungsi hash kriptografi yang saat ini diyakini aman, yang menempatkan bilah bawah di SHA-256.
Preimage pertama adalah menemukan input yang menghasilkan nilai hash output spesifik; preimage kedua adalah menemukan satu input yang memberikan output yang sama dengan input lain yang ditentukan; tabrakan adalah untuk menemukan dua input yang menghasilkan output yang sama, tanpa memperhatikan apa itu dan kadang-kadang tanpa memperhatikan apa input tersebut.
Semua yang dikatakan, penting untuk diingat bahwa file mungkin memiliki representasi data yang sangat berbeda dan masih menampilkan persis sama. Jadi mereka dapat tampak sama meskipun hash kriptografisnya tidak cocok, tetapi jika hash cocok maka mereka sangat mungkin tampak sama.
cmp
di Unix ataufc
(membandingkan file) pada Windows.