1

这是一个非常基本的问题。我已经为此寻求帮助,但找不到任何具体的答案。因此,我在这里专门问它。

用例是,我想找到引用可用哈希列表的弱密码。为此,我必须将每个已知/常用词的哈希值与可用哈希值进行比较。所有这些都是在 C++ for Unix 中使用 openssl/blowfish.h 完成的

但是,要创建这个猜测词的散列,需要使用与密码散列相同的盐来生成。

我的问题是如何从密码哈希中提取盐。假设,以下是我的哈希:

$2a$10$FTx8T5QrEbxYVe.NJ6iOhuei.V9qgl60xF8/8s7iZRDIlOl.ibDEW

这里面的盐是什么?或者我怎样才能实现目标?任何指针都会很棒!!

提前致谢。

4

3 回答 3

2

只需将密码哈希作为盐传递——它足够聪明,可以自行提取。这是公约crypt()

请参阅Modern Unix 和“BSD 样式”散列的密码在 Unix、Mac OS 和 Windows 中的工作原理

注意: 的salt参数crypt()不是盐。是的$algorithm$salt$MORESALTsomething,所以你永远不应该自己提取盐。salt-出于历史(DES 时代)的原因而调用它。

另请参阅为什么 crypt/blowfish 使用两种不同的盐生成相同的哈希?

于 2011-08-25T07:10:08.030 回答
1

密码哈希函数的“盐”与密码连接,然后对结果字符串进行哈希处理。要取回盐,这意味着您需要取回经过哈希处理的字符串。显然,这有两个主要问题:

  1. 如果您能够取回该散列字符串,它还将包含明文密码。这将是散列函数的主要安全失败。
  2. 您还必须弄清楚连接字符串的哪一部分是盐,哪一部分是密码。
于 2011-08-25T08:40:24.923 回答
0

这不是盐的重点吗?你不知道它是什么?所以没有人可以来做你现在想做的事?

我理解盐的方式是这样的:

  • 你有一个字符串,我们称之为password
  • 你有一个算法,它接受一个字符串并从中产生一个哈希值。让我们称之为blowfish
    • 那是正确的吗?河豚是散列算法吗?我不这么认为!!!!
    • 让我们调用我们的算法md5
  • md5会产生一个哈希password,但它总是会产生相同的
  • 你有一个坏人。我们叫他吧Mrun
  • Mrun尝试通过使用字典中的一堆已知密码password进行测试来找出答案md5
  • 通过不使用 just password,而是使用 ,password + salt会产生并阻止不同的哈希Mrun

如果你需要找到盐,你必须至少有一个已知的密码和哈希组合。然后你可以尝试使用蛮力来找出盐分。祝你好运。哦,我希望你在这里不是邪恶的。哦,我希望其余的邪恶生物也一无所知……

于 2011-08-25T07:06:04.657 回答