La forma en que conocemos los hashes (criptográficos) es principalmente que son totalmente diferentes si la entrada se cambia solo por la cantidad mínima.
md5('This is some boring string to test with') // d546c64928a28b5f605610a919680907
md5('This is another boring string to test with') // a74c1d74da495895bf48056ac979723a
Aquí puedes ver que el hash es totalmente diferente, aunque solo cambié una palabra.
Lo que estoy buscando es una función de hash que devuelve una salida que es igual de similar, ya que las entradas son similares y tan diferentes como las entradas
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
Vea cómo los dos primeros hashes son bastante similares, pero el tercero es completamente diferente.
No quiero un simple mecanismo de comprobación de errores que pueda detectar cambios leves (como CRC). Quiero poder comprobar si dos hashes probablemente tienen un origen similar, al ver que los hashes también son similares.
Mi objetivo es entender si es posible tener hashes de, digamos dos huellas dactilares (reales), y luego basándonos simplemente en los hashes para concluir si las huellas dactilares originales probablemente fueron del mismo dedo.
Hace mucho tiempo, una vez aprendí que tales funciones existen.
¿Puede alguien decirme cómo se denominan estos tipos de hashes y cuáles son algunos ejemplos?