【发布时间】:2013-04-30 05:51:23
【问题描述】:
我正在做一个编程挑战,其中一个挑战让我发疯了。在挑战中,我需要计算字符串的 MD5。字符串以下列形式给出:
n[c]:其中n 是一个数字,c 是一个字符。例如:b3[a2[c]] => baccaccacc
在我得到以下字符串之前一切正常:
1[2[3[4[5[6[7[8[9[10[11[12[13[a]]]]]]]]]]]]]
这个字符串变成了一个带有 6227020800 a 的字符串。该字符串超过 6GB,因此几乎不可能在实际时间内计算出来。所以,这是我的问题:
我可以在这里使用 MD5 的任何属性吗?
我知道必须有一种形式才能在短时间内完成,我怀疑这必须与所有字符串都是重复多次的相同字符有关。
【问题讨论】:
-
这可能是简单的反向查找并找到第一个出现的
[,将(a)后面的字符替换为[前面的数字(13,所以13*'a') 然后将该字符串放入变量中,查找下一个[并取mystoredstring*num等等.. -
@Torxed 这个问题不是关于从它的紧凑表示中生成实际的字符串(这将是一个 6227020800 时间的字母,正如 OP 已经说过的那样),而是关于有效地计算这样一个大字符串。
-
我可以在我的机器上用大约 14 秒的 CPU 时间来计算它。你如何定义“实际时间”?
-
@Aya 该死的,我需要 22 秒 :-)
68df0fa...?
标签: python string algorithm hash md5