Hash functions necessarily have collisions, but it's perfectly possible to make the expected time between collisions greater than the human lifespan.