Java中的MD5算法解密

4

以下代码是否可以解密?以下是我们加密字符串值的方法。如果可以解密,请指导我如何操作,据我了解,MD5算法是不可逆的,但现在我的工作是找到解密的方式。请提供您宝贵的意见以完成此任务。

public static String encryptPassword(final String password) {
        if (MyUtil.isEmpty(password)) {
            return null;
        }
        MessageDigest digest;
        try {
            digest = MessageDigest.getInstance("MD5");
            digest.update(password.getBytes(), 0, password.length());
            String secured = new BigInteger(1, digest.digest()).toString(16);
            return secured;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

MD5生成哈希值,我认为从由Md5生成的哈希中恢复字符串是不可能的。 - Rais Alam
感谢大家的回复。 - subodh
2个回答

4
但目前我的工作是找到解密的方法。
祝好运。 MD5是一种哈希算法,它意味着从输入到输出的单向变换,并不一定是双射的。已知MD5存在弱点,但仅针对普通碰撞攻击,而非选择哈希攻击。您可以尝试每个可能的输入,直到获取正确的哈希(或碰撞),但这是计算上昂贵的,也不一定是一个好主意。此外,作为时间 - 内存权衡,可以使用预生成的彩虹表。它们需要长时间才能生成,但查找速度很快。由于使用它们的争议,我不会提供链接,但只要您在适用法律的范围内,就可以自由获得和获取它们。这个过程仍然不是常规的过程,也不是Web应用程序或通用应用程序的最佳选择。
您有没有考虑使用具有密钥的AES,它可以加密,使用该密钥进行解密?

1
你无法逆转MD5算法,但你可以寻找碰撞并希望找到一种。破解md5哈希的最常见方法是使用彩虹表,其中你将你的哈希与大量预先计算的哈希进行比较,希望找到匹配项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接