此问题已经在这里有了答案:
我生成md5哈希并转换为十六进制值。有没有一种方法可以将十六进制值反向转换为python中的原始文本
import base64
import hashlib
def md5_hash(plain_text):
return hashlib.md5(plain_text.encode()).hexdigest()
md5_hash('123456')
md5生成的文本的十六进制值'e10adc3949ba59abbe56e057f20f883e'
您不能反向散列。它们不是加密。哈希(md5,sha256等)是单向的。它们只能从x -> y
开始,无法向后退y -> x
。可以有多个值简化为相同的哈希(称为冲突),其中md5(value1) -> x
和md5(value2) -> x
。这使得无法确定哈希值的原始值。
整个散列的目的是永远不允许您取回原始字符串。
您可以做的是尝试将md5应用于许多字符串,然后偶然发现这些字符串之一与您的最终哈希值具有相同的哈希值,然后可以得出结论,该字符串可能是生成的字符串您的第一个md5哈希值。 (由于散列时信息丢失,因此您可能会遇到2个提供相同散列的不同字符串)