在Java中解码MD5加密

3
public static String convertToMD5(String input) throws Exception {
    String md5 = null;
    if (null == input)
        return null;
    try {
        // Create MessageDigest object for MD5
        MessageDigest digest = MessageDigest.getInstance("MD5");
        // Update input string in message digest
        digest.update(input.getBytes(), 0, input.length());
        // Converts message digest value in base 16 (hex)
        md5 = new BigInteger(1, digest.digest()).toString(16);
    } catch (NoSuchAlgorithmException e) {

        throw e;
    }
    return md5;
}

使用以下代码对字符串进行加密,我想解码MD5加密以获得普通字符串?你能帮忙吗?

2个回答

3

MD5不是加密算法,它是一种散列函数。被散列的字符串不能被解码,原始字符串被永久“销毁”/散列。


2

在@dit的回答中,你只有一种选择,那就是比较MD5字符串。例如:MD5("cat") == MD5("cat"),无法从MD5("cat")推导出"cat",因为它是一个哈希函数。

以下是可以用来比较的内容:

public static boolean matching(String orig, String compare){
    String md5 = null;
    try{
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(compare.getBytes());
        byte[] digest = md.digest();
        md5 = new BigInteger(1, digest()).toString(16);

        return md5.equals(orig);

    } catch (NoSuchAlgorithmException e) {
        return false;
    }

    return false;
}

接着,您可以调用matching("d077f244def8a70e5ea758bd8352fcd8", "cat")这个函数,它将返回true。如果调用matching(MD5("x"), "y")则会返回false


谢谢,你能帮忙最后一条评论吗? - user6915052

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