使用MD5时的NoSuchAlgorithm异常

时间:2014-12-22 22:03:24

标签: java md5 message-digest

import java.security.*;

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

NoSuchAlgorithm例外而失败。

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

  

需要Java平台的每个实现来支持以下标准MessageDigest算法:   MD5   SHA-1   SHA-256   这些算法在Java Cryptography Architecture标准算法名称文档的MessageDigest部分中描述。   请参阅实现的发布文档,以了解是否支持任何其他算法。

那怎么会抛出异常?

幸运的是

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

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

效果很好,而且很优雅,但看起来仍然是一个非常基本的失败。 我错过了什么?

1 个答案:

答案 0 :(得分:-2)

我刚刚检查过DigestUtils类,有一个针对NoSuchAlgorithmException的try-catch句柄。

您可以登入here

您缺少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();
}

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

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