我正在使用MD5哈希字符串的前6个字符来显示颜色。
即:
"hello world".Md5().Substring(0, 6);
在我的应用程序中有一个我需要某种颜色的实例。我想提供我知道将提供某种字符模式的数据(在我的情况下是FF0000)。
那么有没有办法反向生成MD5?还是粗暴地构建MD5以生成以FF0000开头的MD5哈希的好方法?
如果这是不可能的,我可以将此异常硬编码到应用程序中,但是所需的“黑客”数量越少越好。
谢谢!
答案 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