如果在每个可能的160位字符串上尝试使用SHA-1,是否会产生两次哈希,即是否会产生一定的哈希?换句话说,对于每160位字符串,SHA-1是否会产生一个哈希值?
否,SHA-1既不是一般的双射,也不是输入空间仅限于每个可能的160位字符串。它将发生冲突:SHA-1进行迭代处理:Hi = f(Mi,Hi-1)。消息分为512位块。因此,您假设1轮通常会给出双射。但是,如果第一轮给出双射,则第二轮也应该给出双射:如果H1是双射,则H2 = f(M2,H1)也是双射。那么一般来说,Hi = f(Mi,Hi-1)是双射。但是我们知道SHA-1有冲突。例如,2017年2月,CWI Amsterdam和Google宣布他们对SHA-1进行了碰撞攻击,发布了两个不同的PDF文件,这些文件产生相同的SHA-1哈希。
如果哈希函数的所有输出具有相等的概率,那将是很好的。但是常用的哈希函数并不完美。