这是一个非常基本的问题。我已经搜索过这方面的帮助,但找不到任何具体的答案。因此,我在这里特别要求它。
用例是,我想找到指向可用哈希列表的弱密码。为此,我必须将每个已知/常用单词的散列与可用散列进行比较。所有这些都是使用openssl / blowfish.h在C ++ for Unix中完成的。
但是,要创建此猜测字的哈希值,需要使用与密码哈希值相同的盐生成。
我的问题是如何从密码哈希中提取盐。 假设,以下是我的哈希:
$ 2A $ 10 $ FTx8T5QrEbxYVe.NJ6iOhuei.V9qgl60xF8 / 8s7iZRDIlOl.ibDEW
这是什么盐?或者我如何实现目标?任何指针都会很棒!!
先谢谢。
答案 0 :(得分:2)
只需将密码哈希作为盐传递 - 它足够聪明地提取自己。这是crypt()
请参阅现代Unix下的How Passwords Work in Unix, Mac OS, and Windows和“BSD风格”哈希。
注意:salt
的{{1}}参数不是盐。它是crypt()
,所以你不应该自己提取盐。 - 由于历史(DES时代)的原因,它被称为$algorithm$salt$MORESALTsomething
。
另见Why does crypt/blowfish generate the same hash with two different salts?
答案 1 :(得分:1)
密码哈希函数的“salt”与密码连接,然后对结果字符串进行哈希处理。为了取回盐,这意味着你需要找回被散列的字符串。显然,这有两个主要问题:
答案 2 :(得分:0)
这不是盐的重点吗?你不知道它是什么?所以没有人可以来做你现在想做的事情吗?
我理解盐的方式是:
password
。 blowfish
md5
。md5
会为password
生成一个哈希值,但它会始终生成相同的哈希值Mrun
。Mrun
尝试通过使用字典中的一堆已知密码测试password
来找出md5
password
,而是使用password + salt
,会产生不同的哈希并且Mrun
被挫败。如果您需要找到salt,则必须至少有一个已知的密码和哈希组合。然后你可以尝试使用蛮力来找出盐。祝好运。哦,我希望你在这里不是邪恶的。哦,我希望其余的邪恶生物也无能为力......