可以反转MD5吗?

Gov*_*ngh -16 hash md5 scala

我有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)
}
Run Code Online (Sandbox Code Playgroud)

现在我想要原来的字符串.我怎样才能做到这一点?

Maa*_*wes 5

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

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

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