Apakah ada kelas algoritma hash, apakah teoretis atau praktis, sehingga suatu algoritma di kelas dapat dianggap 'refleksif' sesuai dengan definisi yang diberikan di bawah ini:
- hash1 = algo1 ("input teks 1")
- hash1 = algo1 ("input teks 1" + hash1)
Operator + mungkin merupakan gabungan atau operasi tertentu lainnya untuk menggabungkan output (hash1) kembali ke input ("input text 1") sehingga algoritma (algo1) akan menghasilkan hasil yang persis sama. yaitu tabrakan pada input dan input + output. Operator + harus menggabungkan keseluruhan input dan algo tidak boleh membuang bagian dari input.
Algoritme harus menghasilkan entropi tinggi dalam output. Mungkin, tetapi tidak perlu, sulit secara kriptografi untuk membalikkan output kembali ke satu atau kedua input yang mungkin.
Saya bukan ahli matematika, tetapi jawaban yang baik mungkin termasuk bukti mengapa kelas algoritma seperti itu tidak ada. Namun, ini bukan pertanyaan abstrak. Saya benar-benar tertarik menggunakan algoritma seperti itu di sistem saya, jika ada.
Ini adalah duplikat dari pertanyaan yang pertama kali diposting di /programming/4823680/reflexive-hash
sumber
Jawaban:
Saya memberikan konstruksi sepele yang memenuhi persyaratan. Saya menyediakannya hanya untuk menjawab keberadaan fungsi hash "refleksif".
Biarkan menjadi fungsi hash yang menghasilkan entropi tinggi dalam output. Asumsikan bahwa G memiliki string biner panjang sewenang-wenang ke string biner k- bit, di mana k adalah bilangan bulat positif. Biarkan + menunjukkan operator gabungan , dan biarkan | x | menunjukkan panjang string biner x .G G k k + | x | x
Tentukan fungsi hash pada input x sebagai berikut:H x
Seperti yang saya katakan, ini adalah konstruksi yang sepele. Ini dapat diterapkan pada fungsi hash, praktis (seperti MD5, SHA-1, ...) atau teoretis.
sumber