hash - 我们可以反转第二个 sha256 哈希吗?
问题描述
我可以将 sha256 哈希(如第二个哈希)反转为第一个哈希吗?
- ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
- da3811154d59c4267077ddd8bb768fa9b06399c486e1fc00485116b57c9872f5
第二个哈希是由 sha256(1) 生成的,所以可以反转到第一个哈希吗?
解决方案
简而言之,截至 2019 年,NO.
简而言之,加密哈希函数是单向确定性但随机的函数。确定性意味着相同的输入始终具有相同的输出,并且在输出不可预测的意义上是随机的。
在密码学中,我们通过以下方式考虑哈希函数的安全性
- Preimage-Resistance: 对于基本上所有预先指定的输出,要找到任何散列到该输出的输入在计算上是不可行的,即,要找到任何原像
x'
,使得h(x') = y
当给定任何对应输入未知的 y 时。 - 2nd-preimage resistance,weak-collision: 找到与任何指定输入具有相同输出的任何第二个输入在计算上是不可行的,即,给定
x
,找到一个 2nd-preimagex' != x
使得h(x) = h(x')
。 - 碰撞阻力:在计算上找到任何两个不同的输入 是不可行的
x
,x'
它们散列到相同的输出,即,使得h(x) = h(x')
。
您正在寻找的是原像。对于这些冲突,有像 MD4 和 SHA-1 这样的加密哈希函数。但是它们都仍然具有前像和第二原像抗性。
对于 Sha256,尚无已知的二次碰撞攻击。它被认为是一种安全的散列函数。
您可能会发现一些SHA-256的彩虹表, 其中可能包含您的哈希值,但可能没有,因为空间太大而无法覆盖。
推荐阅读
- css - Css 网格 - html 表单 - 我无法在垂直流中引导我的元素
- sql - 更新 SQL 查询本身死锁
- java - 如何为 TableView 创建条件 CellValueFactory?
- vim - 如何映射键“;” 在尼奥维姆
- php - 返回或回显视图有什么区别?返回视图说话的时间比回声视图长
- android - 检查权限的自定义方法
- angular - 传单 Property-Routing-does-not-exist-on-type-typeof-import
- kubernetes-helm - 从 helm 命令行设置嵌套数据结构?
- javascript - 在 JavaScript 或 C# 中删除或 \r
- ruby-on-rails - form_with 没有命中控制器的动作