我有MD5-hashed一个字符串。
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)
}
现在我想要原来的字符串了。我怎么能这样做?
答案 0 :(得分:5)
MD5是cryptographic hash function。密码哈希是单向函数。您无法撤消加密哈希值,但您可以强制删除邮件以查找加密哈希值。
暴力强制意味着尝试所有可能的输入字符串,然后检查散列值是否正确。这是可能的,因为加密哈希在计算上也是唯一的。这意味着有无穷无尽的消息将导致生成相同的哈希值,但是两个不可能导致相同的哈希值。由于MD5断开,MD5哈希值不是特殊构造的消息所独有的。如果您可以找到两条具有相同哈希值的消息,则称为冲突。
还可以创建名为rainbow tables的巨大查找表。这可以帮助加速寻找正确的输入。这仅适用于相对较小或可猜测的数据输入;即它们主要用于查找弱密码。其中一些数据库可以在网上找到。
答案 1 :(得分:2)
您不能解密MD5,这是MD5的功能,如果您想要加密/解密数据,那么使用其他加密技术,如AES
答案 2 :(得分:1)
你做不到。由于MD5是单向散列函数,所以不可能。