我知道解密MD5哈希是不可能的。但是,我正在尝试解决一个谜语游戏,并且很多提示都是用MD5加密的。由于我无法在谷歌上找到一些加密的单词,我想知道是否有可能制作一个能存储常用英语单词及其加密的C ++程序,并且当给定某个加密搜索答案时。
编辑:提示是单词,而不是短语。
答案 0 :(得分:3)
这不是加密,它是一种安全的哈希函数:它只是单向的。并且没有办法给出一个哈希来告诉它原始输入字符串包含一些单词;你需要完全猜测整个提示,否则你就得不到任何信息。
但是如果提示只是单词,那么你当然可以建立一个候选单词哈希表并在其中搜索给定的哈希值;这很容易。
答案 1 :(得分:2)
如上所述,哈希是一种无法逆转的数学函数。所以它不可能解密"哈希。
但是,正如您所猜测的那样,计算可疑结果的哈希值并将您的哈希值与其进行比较是完全正常的。在现实世界的场景中,会有一个salt用来使这个变得不可能,但由于它是一种测试,你可以使用rainbow table。
答案 2 :(得分:0)
解密哈希的方法是根据字符串生成一个,并将结果与您拥有的哈希值进行比较。
如果您知道游戏只使用字母,那么您可以创建一个包含所有字母组合的表,使用此数据库并使用MD5对它们进行哈希处理,然后将它们与您拥有的哈希进行比较。 / p>
你可以用你想要的任何编程语言来做,只需谷歌:md5哈希“语言”。你会发现一个随时可用的散列函数。然后你只需要写:
希望这有帮助。
答案 3 :(得分:-1)
MD5哈希就像一个哈希函数类型。哈希函数是在更小的输出范围上显示输入的函数。它也是一种单向函数,不可能" dehash"东西
一个例子:
输入:所有可能的字符 输出:0到100万之间的数字。
(100万肯定够了,见http://www.oxforddictionaries.com/words/how-many-words-are-there-in-the-english-language)
因此,假设您正在散列文本,每个单词都可以显示在数字上。散列函数通常不保证单词不会显示在同一个数字上。但是由于有更多的单词没有意义,哈希函数大部分时间都可以工作