The way we know (cryptographic) hashes is mostly that they are totally different if the input is changed for just the minimum amount.
md5('This is some boring string to test with') // d546c64928a28b5f605610a919680907 md5('This is another boring string to test with') // a74c1d74da495895bf48056ac979723a
Here you see that the hash is totally different, though I only changed one word.
What I'm looking for is a hash function that returns returns an output which is just as similar, as the inputs are similar, and just as different as the inputs are different
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
See how the first two hashes are quite similar, but the third one is completely different.
I don't want just a simple error-checking mechanism that can detect slight changes though (like CRC). I want to be able to check if two hashes most probably have the a look-a-like origin, by seeing that the hashes are also look-a-likes.
My goal is to understand if it is possible to have hashes of let's say two (actual) fingerprints, and then merely based on the hashes conclude if the original fingerprints probably were from the same finger.
A long time ago I once learned such functions exist.
Can anyone tell me what these types of hashes are named, and what some examples are?