属性1:防碰撞性。我们从加密哈希函数中需要的第一个属性就是它的防碰撞。当两个不同的输入产生相同的输出时,会发生碰撞。如果没有人可以发现碰撞,哈希函数H(.)则具有防碰撞性。正式地:
请注意,我们说没有人可以找到碰撞,但是我们没有说没有碰撞存在。实际上,我们确实知道碰撞存在的事实,我们可以通过一个简单的计数参数来证明这一点。哈希函数的输入空间包含所有长度的所有字符串,但输出空间只包含特定且固定长度的字符串。因为输入空间大于输出空间(实际上,输入空间是无穷大的,而输出空间是有限的),所以必须有输入字符串映射到相同的输出字符串。事实上,根据“鸽子原则”,映射到任何特定输出的可能输入必然将是非常大的。