今天的哈希算法被广泛用于检查数据的完整性,但为什么使用它们是安全的? 256 位散列算法生成给定数据的 256 位表示。但是,256 位哈希只有 2512 个变体。但是 1 KB 的数据有 28192 个不同的变体。世界上的每条数据都具有不同的哈希值在数学上是不可能的。那么为什么哈希算法是安全的?
最佳答案
哈希算法被认为是安全的原因如下:
- 它们是不可逆的。您无法通过对输出哈希值进行逆向工程来获取输入数据。
- 输入的微小变化会产生截然不同的哈希值。即“hello”与“hellp”将生成完全不同的值。
关于数据完整性的假设是,输入数据的良好副本和输入数据的不良(恶意)副本之间的大部分输入都是相同的。数据的微小变化都会使哈希值完全不同。因此,如果我尝试注入(inject)任何恶意代码或数据,那么这个小改动就会完全丢掉哈希值。当与已知哈希值进行比较时,很容易确定数据是否已被修改或损坏。
你是对的,无限数量的数据集之间存在冲突的风险,但是当你比较两个非常相似的数据集时,有理由假设这两个几乎等价的数据集的哈希值完全相同不同。
关于algorithm - 为什么哈希算法可以安全使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37929010/