algorithm - 为什么哈希算法可以安全使用?

标签 algorithm security hash

今天的哈希算法被广泛用于检查数据的完整性,但为什么使用它们是安全的? 256 位散列算法生成给定数据的 256 位表示。但是,256 位哈希只有 2512 个变体。但是 1 KB 的数据有 28192 个不同的变体。世界上的每条数据都具有不同的哈希值在数学上是不可能的。那么为什么哈希算法是安全的?

最佳答案

哈希算法被认为是安全的原因如下:

  1. 它们是不可逆的。您无法通过对输出哈希值进行逆向工程来获取输入数据。
  2. 输入的微小变化会产生截然不同的哈希值。即“hello”与“hellp”将生成完全不同的值。

关于数据完整性的假设是,输入数据的良好副本和输入数据的不良(恶意)副本之间的大部分输入都是相同的。数据的微小变化都会使哈希值完全不同。因此,如果我尝试注入(inject)任何恶意代码或数据,那么这个小改动就会完全丢掉哈希值。当与已知哈希值进行比较时,很容易确定数据是否已被修改或损坏。

你是对的,无限数量的数据集之间存在冲突的风险,但是当你比较两个非常相似的数据集时,有理由假设这两个几乎等价的数据集的哈希值完全相同不同。

关于algorithm - 为什么哈希算法可以安全使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37929010/

相关文章:

algorithm - 星搜索算法的 Erlang 实现

php - 寻路算法找到从一个地方到另一个地方的路线

java 安全策略没有按预期工作,总是给出 AccessControlException

asp.net-mvc - MVC RequireHttps 属性毫无值(value)?

security - 暴力嵌入 MD5sum 的时间复杂度

php - 如何在数据库中存储为哈希创建的盐?

algorithm - 当缺少 BOM(字节顺序标记)时,我如何才能最好地猜测编码?

algorithm - 加权快速联合算法中节点与根的平均距离?

javascript - 确保 JavaScript 未被篡改

java - Java 中的布隆过滤器