【问题标题】:How to combine md5 hashes to of byte array to get equalent md5 hash of combined array如何将 md5 哈希组合到字节数组以获得组合数组的相等 md5 哈希
【发布时间】:2014-09-14 12:15:52
【问题描述】:

我有两个字节数组,比如说 A 和 B。我分别为它们计算了 MD5 Hash AH 和 BH。 现在,如果我将这些数组 A 和 B 组合到 AB,并将 MD5 哈希计算为 ABH,那么将 AH 和 BH 组合成 ABH 的方法应该是什么?

【问题讨论】:

  • a) 我认为这不可能。 (但我对这方面没有特别的了解。) b)根据en.wikipedia.org/wiki/MD5,MD5 被认为是“密码损坏且不适合进一步使用”。
  • 如果你能找到一种简单的方法来做到这一点,你就会出名。
  • 我认为散列不会为您提供您想要的。你能用一些关于为什么你需要能够做这样的事情的细节来更新这个问题吗?也许我们可以为您的问题提供不同的解决方案。
  • 我需要上传一个文件,我需要维护其哈希以确保文件完整性是可验证的。稍后我需要在上传的文件中添加一些字节,使其成为版本 2。根据请求的用户授权,我需要给他们初始版本或更高版本。
  • 看一下rsync算法,很有指导意义。

标签: c# .net md5


【解决方案1】:

根据您的 cmets,您不需要加密哈希,而只是某种“指纹”来提供一定程度的哈希 = 数据保证,那么这是一种可能性:

最简单的哈希是对数据进行异或(异或)。因此,对于 8 字节散列,您只需遍历数据并每隔 8 个字节进行异或运算,生成一个 8 字节散列。这提供了非常高的确定性,除非“坏人”知道你是如何进行散列的,否则很容易伪造。

如果您连接两个数据数组 A 和 B,那么只要 A 的长度是 8 的倍数,或者如果可以在 A 和 B 之间放置零填充,因此 A + 填充是 8 的倍数,那么组合散列将是(A 的散列)XOR(B 的散列)。 (至少,如果我没记错的话,这是我 50 年前学到的。)

编辑:

刚刚发现:Why is XOR the default way to combine hashes?

【讨论】:

    【解决方案2】:

    密码学专家可能有能力使用某个值的部分 MD5 散列来获取有关完整值的 MD5 散列的一些信息,但实际上,获取某个值的 MD5 散列的唯一方法是根据该值计算 MD5 哈希。

    【讨论】:

    • 是否有任何其他散列技术可以实现这一目标?
    • @SreekanthVaddepati:您是指加密散列,还是任何旧的散列,例如用于为散列表提供索引的散列?
    • @RenniePet 任何可以实现这一目标的东西!
    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 2015-08-06
    • 2020-07-24
    • 2011-01-27
    • 2012-03-23
    • 2018-12-11
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多