可以反转MD5吗?

时间:2014-11-21 11:28:40

标签: scala hash md5

我有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)
}

现在我想要原来的字符串了。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

MD5是cryptographic hash function。密码哈希是单向函数。您无法撤消加密哈希值,但您可以强制删除邮件以查找加密哈希值。

暴力强制意味着尝试所有可能的输入字符串,然后检查散列值是否正确。这是可能的,因为加密哈希在计算上也是唯一的。这意味着有无穷无尽的消息将导致生成相同的哈希值,但是两个不可能导致相同的哈希值。由于MD5断开,MD5哈希值不是特殊构造的消息所独有的。如果您可以找到两条具有相同哈希值的消息,则称为冲突。

还可以创建名为rainbow tables的巨大查找表。这可以帮助加速寻找正确的输入。这仅适用于相对较小或可猜测的数据输入;即它们主要用于查找弱密码。其中一些数据库可以在网上找到。

答案 1 :(得分:2)

您不能解密MD5,这是MD5的功能,如果您想要加密/解密数据,那么使用其他加密技术,如AES

答案 2 :(得分:1)

你做不到。由于MD5是单向散列函数,所以不可能。