我正在实现一种快速查找数据仓库源代码更改的方法。
经过几次尝试,我们发现散列给定表的所有属性并将其与目标进行比较是比较它的最有效方法之一。
然而,对我们来说不可忽视的问题是碰撞风险。因为我需要100%信任我的数据
我的理解是,使用SHA-512,它应该接近0(2 ^ -256 ...)。但我们无法找到的是输入字符串的长度是否会影响碰撞的可能性。
因为在一个包含20个字段的表的情况下,我相信它会起作用,但是对于一个包含280个字段的表,其中一些字段有自由文本...我想确定。
我知道一个字符串的最大长度是2 ^ 128但是散列一个20.000个字符而不是200个更长的字符串会增加碰撞的概率吗?
感谢您的帮助。
答案 0 :(得分:0)
哈希算法内部函数始终使用固定长度输入。因此,当散列长字符串时,它会将字符串拆分为数据块,这些数据块与内部函数所需的输入长度一样长(如果需要,填充最后一个字符串)。然后它将遍历块并组合块的输出与当前状态,即所有先前块的组合输出。
已经证明,这种结构使得最终散列与内部函数一样能够抵抗碰撞。检查Merkle–Damgård construction(在SHA-512中使用)文章。