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 に答える