让我们说例如我使用了一个函数,如:
If Input = "youtube" Or Input = "Youtube Then
Sapi.speak "Opening Youtube"
wshshell.run "www.youtube.com"
End If
为了重现相同的哈希值,推断出如何操作哈希是多么容易?
答案 0 :(得分:2)
这取决于转型。对于someHash
函数,这非常简单。请注意,您正在应用的变换是一个简单的线性函数。您的转换可以表示为:
其中 h'是新哈希, h 是原始哈希。如果您有一个哈希值及其更改的哈希值,则可以求解 c 的等式。 (c = h' - h = -90
)。
这个例子很多,为什么我们经常说rolling your own crypto通常不是一个好主意。该计划实际上需要两个属性:
上面提到的攻击 为什么 1。很重要。在这种情况下,转换具有非常清晰的结构,我们可以很容易地利用它。
需要 2。,因为即使我们没有具有此结构的方案,我们仍然可以枚举c
。在尝试了非常少量的数字之后,我们仍然找到常量c = -90
。
这并不意味着这是不可能的。恰恰相反:我们使用分组密码重新加密哈希。这是有效的,因为块密码产生的输出看起来是随机的,它需要随机生成的≥128位密钥(这足够大,以至于无法轻易猜到)。