2

假设给定两个哈希码,您已经获得了字符 1 到字符 9 的值。其余字符是未知的。消息长度也是未知的。

碰巧这两个哈希码是从 2 个不同的明文生成的,但只有第一个字符不同,其余字符完全相同。

First hash code = *********************
Second hash code = *********************
plaintext1 = 1************************ 
plaintext2 = 2************************

能够暴力恢复明文吗?

4

2 回答 2

1

暴力破解总是可能的,这取决于你的意图,它是否适用。

寻找碰撞(密码登录)

如果你只需要找到一个冲突(一个导致相同哈希值的值),暴力破解是适用的。现成的 GPU 能够每秒计算3 Giga SHA1 哈希值。这就是为什么像 SHA1 这样的快速散列函数对于散列密码来说是一个不好的选择,而应该使用像 BCrypt 或 PBKDF2 这样的密钥派生函数。

寻找原始密码

查找碰撞会比较快,查找原始密码(不仅仅是碰撞)可以使用更多时间,这取决于密码的强度,然后需要多少时间。

使用良好的密码散列函数,关于相同字符的知识应该不会给您带来任何好处。

明文修改(数字签名)

如果您想更改明文,使其产生相同的哈希值,那么您可能会花费一生来寻找这样的文本。这要困难得多,因为新文本最终应该是有意义的。

于 2012-10-30T08:08:59.847 回答
0

密码散列算法旨在将明文中的微小变化传播到整个计算的散列中。你问的那种攻击是不可行的。

于 2012-10-30T05:39:18.193 回答