Esiste un algoritmo di hash che ti aiuterà a identificare file o stringhe simili? Ad esempio, l'hash per ABC e XBC sarebbe simile piuttosto che radicalmente diverso come di solito è il caso. Conosco una misura di somiglianza, Modifica distanza ( link ). Ma questo non ti dà un hash per ogni input da confrontare, solo un punteggio tra due ingressi qualsiasi.
Aggiorna
Il commento di Andan (hashing sensibile alla località, LSH) è quello che stavo cercando. Il motivo per cui ho posto la domanda è che mi stavo chiedendo come utilizzare LSH nella ricerca di malware. È usato per identificare il malware? Perché o perché no?
Aggiorna
In linea con le risposte di Tom Leek, ho fatto delle indagini personali. Ho scritto un programma che avrebbe XOR i byte di un file con un modello "casuale" predeterminato (il seme non è cambiato). Quindi sommerebbe il totale di 1 bit. Ciò produrrebbe la distanza di Hamming dal modello casuale al file. In realtà, non era una metrica molto utile in quanto fondamentalmente (in media) si limitava a dimezzare le dimensioni del file per ottenere un numero.
Alcuni esempi:
Due eseguibili correlati ho scannerizzato con punteggio 2684964 e 2738772 per una differenza di 53808. Sono decisamente correlati (versioni differenti dei programmi che ho scritto) ma il valore di 53k è vicino alla metà della differenza di dimensione del file in bit: ~ 128k. Quindi non è una metrica utile per determinare la somiglianza.
Ho scansionato due JPEG di dimensioni simili che erano immagini decisamente diverse. Hanno scansionato come 3124915 e 3110981 per una differenza di 13934. Quindi la loro differenza era "più piccola" della differenza tra l'eseguibile correlato, anche se non sono correlati. Quindi non è una metrica utile per determinare la differenza.
Conclusione:
Come ha detto Tom Leek, è un problema aperto per una ragione.