2017-06-01 66 views
0

我与我的一位朋友发生了争执。他说它可以作为一个使用,但是哈希函数应该具有强大的碰撞抵抗能力,校验和函数是否具有它?我不太确定。校验和功能可以用作散列函数吗?

+2

* could *和* should *之间有区别。还有很多不同的校验和。所以没有一个答案。 –

+0

Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[密码学堆栈交换](http://crypto.stackexchange.com/)或[信息安全堆栈交换](http://security.stackexchange.com/)将是一个更好的地方要问。 – jww

回答

2

不,通用校验和函数没有强大的抗碰撞性。当然,你可能会认为密码散列函数也是一个校验和,但是这是围绕着变量的。

对于碰撞阻力,您必须考虑生日问题。这意味着散列函数的安全性大约是输出大小的一半。因此,任何低于160位输出大小(80位安全性)的东西都会直接受到注意,因为暴力强制会被视为可能。最低限度,您希望有128位输出,MD-5(破损)或RIPEMD-128的输出。

一般而言,您可以直接关闭任何没有至少128位输出的功能。也就是说,假设对手不受其他方式的限制,例如用于生成散列的设置重试计数。

请注意,内部结构也很重要;如果算法不是专门作为密码哈希创建的,那么它们具有抗碰撞能力的机会大约为零。