Each hash function is NOT injective. Hashes map a large domain to much smaller code. According to the principle of a blue hole, such a function cannot be injective, since there will be elements in the domain that will be displayed on the same element in the codemon.
For example, providing a hash function to a large file as input and getting a short checksum. There are many more possible large files (pigeons) than there are possible short checksums (pigeon holes), so "collisions" will undoubtedly occur.
source share