【发布时间】:2016-10-22 02:12:39
【问题描述】:
如今,散列算法被广泛用于检查数据的完整性,但为什么它们可以安全使用? 256 位散列算法生成给定数据的 256 位表示。但是,256 位散列只有 2512 变体。但是 1 KB 的数据有 28192 个不同的变体。世界上的每条数据都有不同的哈希值在数学上是不可能的。那么为什么哈希算法是安全的呢?
【问题讨论】:
-
这应该迁移到计算机科学家或安全部门
-
@KelvinZhang 单击此页面顶部的 StackExchange 菜单。靠近底部有一个搜索栏,您可以在其中找到其他社区。例如,输入“security”以显示正确的社区。span>
-
您要查找的内容称为“哈希冲突”。这是当 2 个内容具有相同的哈希值时。由于 a/ 哈希算法的构造和 b/ 内容本身的熵,它们非常罕见。
-
我投票决定将此问题作为题外话结束,因为它与编程无关。它可以在security.stackexchange.com
-
哈希函数主要有两种类型。 1. 那些允许冲突的地方,例如字典查找函数中使用的那些使用二次方法(如重新散列或完全比较来消除歧义)。 2. 那些抗冲突的,例如密码散列函数,其中输入中的单个位差异将导致大约 50% 的输出位发生变化。 SHA-256 是第二种类型,可以安全地用于确定两个文件是否相同。