Il modo in cui conosciamo gli errori (crittografici) è in gran parte che sono totalmente diversi se l'input viene modificato solo per l'importo minimo.
md5('This is some boring string to test with') // d546c64928a28b5f605610a919680907
md5('This is another boring string to test with') // a74c1d74da495895bf48056ac979723a
Qui vedi che l'hash è completamente diverso, anche se ho cambiato solo una parola.
Quello che sto cercando è una funzione di hash che restituisce restituisce un output che è altrettanto simile, in quanto gli input sono simili e altrettanto diversi quanto gli input sono diversi
fn('This is some boring string to test with') // 00dd2171b47cc2748c2874c42284737
fn('This is another boring string to test with') // 01ed2371b47cc5748c2874c42284738
fn('The quick brown fox jumps over the lazy dog') // 27bc27999aa2c3c2452cff234feee21
Guarda come i primi due hash sono abbastanza simili, ma il terzo è completamente diverso.
Non voglio un semplice meccanismo di controllo degli errori in grado di rilevare piccole modifiche (come il CRC). Voglio essere in grado di verificare se due hash hanno molto probabilmente l'origine di un look-a-like, osservando che anche gli hash sono simili al look.
Il mio obiettivo è capire se è possibile avere degli hash di due (effettive) impronte digitali e quindi basarsi solo sugli hash concludere se le impronte digitali originali erano probabilmente dello stesso dito.
Molto tempo fa, una volta ho appreso che tali funzioni esistono.
Qualcuno può dirmi che nome hanno questi tipi di hash e quali sono alcuni esempi?