关于生产中md5碰撞的几个问题

时间:2015-06-17 03:58:03

标签: algorithm hash hashmap md5 secret-key

我在游戏公司,我们使用md5算法进行收费单检查。

以下是我们的工作方式:

  1. 在付费中心服务器和我们的游戏服务器上都有一个共同的"密钥"。

  2. 付费中心向我们的游戏服务器发送添加游戏币请求 其中有许多常规参数和一个名为" sign"

  3. 当我们在游戏服务器上收到请求时,我们使用md5("所有传统参数" +"密钥")来生成结果。
    如果结果等于"符号"参数,我们将此收费订单视为有效订单。

  4. 我的问题是:

    如果有人盲目地使用随机生成的"伪秘密密钥"用所有其他参数进行md5计算以产生符号 巧合的是,他用他的一个伪秘密密钥"做了一个有效的标志。

    1. 他需要尝试为每组"常规参数生成有效标志多少次?"

    2. pseudo-secret-key碰巧生成有效secret-key时,sign与原始pseudo-secret-key相同的机会有多少?

    3. 如果secret-key与原始pseudo-key不同,是否几乎无法使用conventional parameters使用{{1}的其他不同组合生成有效符号}

1 个答案:

答案 0 :(得分:1)

基本:md5哈希结果是均匀分布的。这可能是2 ^ 128中的1。

  1. 你无法确切知道他需要多少次尝试。但是,您可以在t次尝试中计算归类的可能性:1 - (1 - 1 / (2 ^ 128)) ^ t。例如,在2 ^ 128次尝试后,他有可能获得大约1/3。
  2. 取决于您的密钥范围。
  3. 同样,机会是1/(2^128)