擅长:python、mysql、java
<p>关于散列的一个常见说法是,散列丢弃信息,因此它们不能被逆转。有无限的消息具有相同的哈希值。您不知道提供相同哈希值的无限消息中的哪一个是正确的。</p>
<p>当然在实践中,暴力攻击经常奏效,要么是因为你的搜索策略可能首先找到真正的原始消息(大多数具有哈希冲突的消息显然在某些琐碎的方面是错误的,例如错误的格式,并且不会因此出现在搜索中),要么是因为你的攻击无论如何都需要具有相同哈希的不同消息。</p>
<p>在您的例子中,您对消息的了解意味着消息中的信息比(显然)散列中的信息少。当然散列不会产生新的信息,所以这意味着不能对任何协调字符串进行许多散列。在可能的散列和可能的消息之间,有一个1:1的关系(对于好的散列算法来说概率非常高)。原则上,您的消息有一个加密形式,可以解密。</p>
<p>当然,很多人会说我是个白痴。毕竟,您仍然需要找到所有可能消息的所有散列。这可能比一些人想象的要快,但离琐事还有很长的路要走。</p>
<p>已经指出,根据坐标格式,有10^16种可能的组合。要检查的一件事是,是否所有这些数字的所有值都是可能的(并且同样可能)。在内部使用浮点运算不成问题-双精度浮点不是8位小数,但53位尾数应该足够确保所有这些小数都能充分使用。然而,值得一提的是,没有其他限制可以减少要检查的案例数量——最明显的一个限制是如何测量这些坐标的精度。</p>
<p>即使某些数字值的可能性比其他数字值小,这意味着命令搜索首先检查更可能的值将为破解者节省大量时间。</p>