【发布时间】:2021-06-17 18:55:55
【问题描述】:
我有一个关于散列的基本问题。据说散列是一种方法。我有一个疑问,如果我们只是简单地颠倒程序/算法/逻辑中的步骤,那么我们不能找到至少一个哈希到给定输出哈希值的输入吗?。
我找到了2个相关的帖子,但我仍然不完全清楚:
How is one way hashing possible?
How do one-way hash functions work? (Edited)
我的问题与第一篇文章中对已接受答案的评论相同:
“好吧,但是如果我想绕过密码检查,只要找到一个哈希值与原始密码相同的字符串就足够了”。这个评论站得住脚吗?
【问题讨论】:
-
我不清楚您的问题是什么,您声称的问题是陈述。如果您认为您可以反向运行程序,为什么不选择一个哈希函数并尝试一下呢? (请注意,为 SHA-256 有效地实现这一点会让你变得富有,因为你将能够挖掘比特币)。
-
@PaulHankin :我们不能通过手动计算手动反向运行算法吗?我们可以手动计算算法中每一步的输入和输出。
-
@grit639:并非所有数学运算都是完全可逆的。
-
如何反转
a=b?你不知道a以前是什么。您可以选择一个值,但它可能与代码中的任何路径都不兼容。 -
一个更好的例子:假设哈希函数是
integer hash(integer k) { return pow(65537, k, M) },其中 pow(65537, k, M) 是 65537 的 k 次方 M (其中 M 是两个大素数的乘积),integer是一个 4096 位整数。你如何扭转它?这个功能难以逆转是 RSA 加密起作用的原因。
标签: algorithm security hash cryptography cryptographic-hash-function