获取具有特定字符模式的MD5

时间:2014-02-07 19:19:55

标签: hash md5

我正在使用MD5哈希字符串的前6个字符来显示颜色。

即:

"hello world".Md5().Substring(0, 6);

在我的应用程序中有一个我需要某种颜色的实例。我想提供我知道将提供某种字符模式的数据(在我的情况下是FF0000)。

那么有没有办法反向生成MD5?还是粗暴地构建MD5以生成以FF0000开头的MD5哈希的好方法?

如果这是不可能的,我可以将此异常硬编码到应用程序中,但是所需的“黑客”数量越少越好。

谢谢!

1 个答案:

答案 0 :(得分:2)

您不能反转MD5,因为它是单向函数。但我们可以尝试候选人,直到找到我们喜欢的候选人。

这是一个小程序,它递增计数器并将该计数器作为md5哈希的字符串进行测试。 需要几秒钟和200万次尝试才能找到以FF0000开头的md5。

Python 3:

import hashlib

target = 'ff0000'
candidate = 0
while True:
    plaintext = str(candidate)
    hash = hashlib.md5(plaintext.encode('ascii')).hexdigest()
    if hash[:6] == target:
        print('plaintext:"' + plaintext + '", md5:' + hash)
        break
    candidate = candidate + 1

结果:

plaintext:"2237563", md5:ff0000475d94089c1f6c3fb9e19a8015