Java:知道为什么MessageDigest.getInstance("MD5")
会返回null
吗?直到最近,这一切都很好。
问问题
1681 次
1 回答
3
我怀疑这个问题
MessageDigest.getInstance(“MD5”) 返回 null
如果MessageDigest
您的意思是类java.security.MessageDigest
,该方法将不会返回 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。
所以一步一步检查和调试你的代码,找出哪个对象是空的。
于 2013-01-22T22:04:56.630 回答