Are there cryptographic hash functions which do not have any collisions? I've been studying digital signatures and hash functions recently, and I was wondering: Do hash functions exist which will never produce collisions?
This is impossible for any generally useful hash: a hash must map all inputs to a fixed-length output, but you normally want to be able to take variable (and fairly long) inputs. The problem is that there are more inputs than outputs: you normally want to be able to hash any string up to a fairly big length, but the hash itself should not be too long, and there are more long strings than short ones.