我想使用 MessageDigest 获取 MD5 哈希值,但出现错误。

import java.security.MessageDigest;

public class dn {
  public static void main(String[] args) {
    MessageDigest md = MessageDigest.getInstance("MD5");
  }
}

错误:



错误是指
NoSuchAlgorithmException - 如果指定算法的 MessageDigestSpi 实现无法从指定提供程序获得。
在这个站点上找到 http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest.html 下的 getInstance

我已经重新安装了最新的 java jdk1.7.0_21 和不同版本的 eclipse,但错误仍然存​​在。其他一切都在 eclipse 上运行良好。

我不知道我还能做什么。

最佳答案

错误消息很明确:代码无法编译( Unresolved 编译问题),因为您没有处理 NoSuchAlgorithmException 可以抛出的已检查异常 MessageDigest.getInstance()

要么将此异常添加到 main 方法的 throws 子句,要么捕获它:

public static void main(String[] args) throws NoSuchAlgorithmException {
    ...
}

or

public static void main(String[] args) {
    try {
        ...
    }
    catch (NoSuchAlgorithmException e) {
        System.err.println("I'm sorry, but MD5 is not a valid message digest algorithm");
    }
}

请注意,这是一个编译错误。尽管存在编译错误(在 Eclipse 的“问题” View 中可见),并且尽管 Eclipse 在启动程序之前警告过您,但您还是选择了启动程序。所以你尝试执行不能编译的代码,这是你不应该做的。

编辑:
修复了 NoSuchAlgorithmException 中代码中的错字

10-06 05:57