Java:MessageDigest.getInstance(";MD5";)返回null

Java:MessageDigest.getInstance(";MD5";)返回null,java,jce,Java,Jce,Java:知道为什么MessageDigest.getInstance(“MD5”)会返回null?直到最近,这种方法还很有效。我对这个问题表示怀疑 getInstance(“MD5”)返回null 如果您所指的类MessageDigest是java.security.MessageDigest,则该方法将NOT返回null,即使您将不存在的算法作为参数 来自jdk1.7的代码 public static MessageDigest getInstance(String algorithm)

Java:知道为什么
MessageDigest.getInstance(“MD5”)
会返回
null
?直到最近,这种方法还很有效。

我对这个问题表示怀疑

getInstance(“MD5”)返回null

如果您所指的类
MessageDigest
java.security.MessageDigest
,则该方法将NOT返回null,即使您将不存在的算法作为参数

来自jdk1.7的代码

public static MessageDigest getInstance(String algorithm)
    throws NoSuchAlgorithmException {
        try {
            Object[] objs = Security.getImpl(algorithm, "MessageDigest",
                                             (String)null);
            if (objs[0] instanceof MessageDigest) {
                MessageDigest md = (MessageDigest)objs[0];
                md.provider = (Provider)objs[1];
                return md;
            } else {
                MessageDigest delegate =
                    new Delegate((MessageDigestSpi)objs[0], algorithm);
                delegate.provider = (Provider)objs[1];
                return delegate;
            }
        } catch(NoSuchProviderException e) {
            throw new NoSuchAlgorithmException(algorithm + " not found");
        }
    }
若它返回null,那个么md或delegate必须为null,那个么NPE发生在这个类中


因此,请一步一步地检查和调试代码,找出哪个对象为null。

您可以添加一个如何调用getInstance方法的代码示例吗?还提供环境和java版本数据。你知道你的java安装最近有什么变化吗?如果没有任何代码,我们就无能为力。你能发布你的代码吗?“这在最近还可以正常工作”…最近发生了什么?你必须提供一些代码并解释到底出了什么问题。这就是确切的代码:MessageDigest lDigest=MessageDigest.getInstance(“MD5”);Kent-我在错误日志中偏离了行号,但在调试之后,它似乎就在它下面。因此,这个问题不再有效。谢谢你花时间回复。@stak,谢谢你让我们知道!