【发布时间】:2015-01-19 12:53:39
【问题描述】:
我对一个字符串进行了 MD5 哈希处理。
def hash(s: String) = {
val m = java.security.MessageDigest.getInstance("MD5")
val b = s.getBytes("UTF-8")
m.update(b, 0, b.length)
new java.math.BigInteger(1, m.digest()).toString(16)
}
现在我想要原始字符串。我该怎么做?
【问题讨论】:
-
你不能。这是一个单向函数,不打算可逆。
-
嗯,MD5 现在或多或少被认为是损坏的。在接下来的几年中,我们很可能会看到在破解 MD5 方面取得重大进展,所以,如果你可以等待 10 年,那么结合密码分析和计算能力的进步应该可以在实际的时间框架内做到这一点,即使不使用彩虹桌。
-
你在“加密”时没有提供任何密码,所以即使是加密也不是一种有用的加密形式,因为任何人都可以运行解密功能。
-
@Jörg:不,哈希不包含有关原始字符串的足够信息。这不是复杂性的问题。