首页 文章

在迭代中使用多个哈希输出?

提问于
浏览
0

使用其他哈希算法的输出作为下一个哈希迭代的输入是否存在已知或感知的弱点?

当然不建议使用双散列,但这与双散列不同 .

例:

我采用“秘密”输入,并分别用SHA256,SHA384和RIPEMD160进行散列 . 然后,我将每个输出组合成一个长字符串,以用作SHA512哈希的输入 . 然后我反复重复这个过程很多次 .

在我看来,这样做会大大扩展SHA512的输入长度,并且实际上更加粗野,甚至更不可行 .

另外,我考虑仅使用第四个散列函数来生成一个值,该值随后可用于改变组合输入字符串的长度,可能以不可预测的方式丢弃几个字节,因此输入不是恒定大小 . 我不完全确定这会有什么好处 .

思考?

1 回答

  • 0

    这个问题的答案很大程度上取决于攻击场景 .

    当然不建议使用双重散列,但这与双重散列不同 .

    我会说: No! 如果你使用哈希函数存储密码,如果你使用多轮(将第n轮的输出作为第n轮的输入),对商店的攻击会更加困难 . 比特币作为另一个例子使用2次传递(参见herehere) . 有关其他信息,请参阅Why hashing twice?

    可能以不可预测的方式丢弃几个字节,因此输入不是一个恒定的大小 . 我不完全确定这会有什么好处 .

    这抵消了散列函数的设计方式 . 您希望该函数使用相同的输入生成相同的输出 . 解除这种关系基本上会破坏该功能的所有用途 . 您可以使用随机数生成器 . 另见:Does the MD5 algorithm always generate the same output for the same string?Is sha-1 hash always the same?

    在我看来,做[...]基本上使得暴力更加不可行 .

    引用的陈述是正确的,但推理是有缺陷的 . 它使暴力更难,因为攻击者必须计算4个函数而不是1个函数 . 并且她不能使用彩虹表,因为它们不是为您的设置生成的 .

    Wild guess :如果您使用上述设置来存储和验证密码,请不要这样做 . 使用PBKDF2或bcrypt . 见Password Storage Cheat Sheet

相关问题