4
import java.security.*;

MessageDigest md = MessageDigest.getInstance("MD5");

异常失败NoSuchAlgorithm

MessageDigest 文档]( http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html ) 说:

Java 平台的每个实现都需要支持以下标准 MessageDigest 算法: MD5 SHA-1 SHA-256 Java Cryptography Architecture Standard Algorithm Name Documentation 的 MessageDigest 部分描述了这些算法。请查阅您的实现的发布文档以查看是否支持任何其他算法。

那么它怎么会抛出异常呢?

幸运的是

import org.apache.commons.codec.digest.DigestUtils;

System.out.println( "md5 = "+DigestUtils.md5Hex( string ) );    

完美地工作,而且它很优雅,但看起来仍然是一个非常基本的失败。我错过了什么?

4

1 回答 1

-3

我刚刚检查了 DigestUtils 类,有一个用于 NoSuchAlgorithmException 的 try-catch 句柄。

你可以在这里登记。

您缺少 throws 声明或 try-catch 块来处理异常。错误应该是编译错误。If it's not a compilation error check the "MD5" string typo.

对于编译错误,请尝试使用 try-catch 块覆盖您的代码。

try {
    MessageDigest md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {  
    e.printStackTrace();
}

或者添加你的​​方法 throws 声明。

public static void main(String[] args) throws NoSuchAlgorithmException {
于 2014-12-22T23:25:18.780 回答