【发布时间】:2012-02-09 15:55:37
【问题描述】:
On this blog post,有一句话如下:
这个散列对于给定的文本是唯一的。如果你使用哈希函数 再次在相同的文本上,您将获得相同的哈希值。但是没有办法 从哈希中获取给定的文本。
请原谅我对数学的无知,但我无法理解为什么无法从哈希中获取给定的文本。
如果我们使用一个密钥加密值并使用另一个密钥解密,我会理解,但我无法在我的脑海中弄清楚。幕后究竟发生了什么?
任何让我头脑清醒的东西都会受到赞赏。
【问题讨论】:
-
阅读有关这些散列算法的维基百科文章。应该可以帮助你理解。关键在于它们是独一无二的。我应该补充一点,您当然可以弄清楚文本属于什么,提供了某些信息。它是一种蛮力方法,例如所有已知的 md5 值都是已知的。因此,给定一个特定的字符数组,我们可以找出值是什么。仅仅使用这些散列算法并不聪明,你需要使用盐,否则即使 SHA512 给定足够的时间也很弱。
-
@Ramhound 好的,现在我很困惑。 Oded 在下面建议它们不是唯一的,而您说它们是唯一的。
-
更正确的解释应该是这样的:“这个散列函数极不可能为不同的输入提供相同的输出,因此可以被认为是唯一的。”
-
@Ramhound - 哈希有冲突。即使使用 MD5,也有已知的输入会产生相同的哈希值。
-
@Oded - 我知道。 MD5 尤其是因为它需要的字节数。你不能散列更多的字节,然后它支持的冲突。话虽如此,MD5 仍然可以使用彩虹表。我想这是有限制的。我什至后悔发表那种声明。
标签: c# .net security hash cryptography