CDC 1.1.2

java.security
クラス MessageDigest

java.lang.Object
  上位を拡張 java.security.MessageDigestSpi
      上位を拡張 java.security.MessageDigest

public abstract class MessageDigest
extends MessageDigestSpi

この MessageDigest クラスは、MD5 または SHA などのメッセージダイジェストアルゴリズムの機能を提供します。メッセージダイジェストは、任意サイズのデータを取得して固定長のハッシュ値を出力する安全な一方向のハッシュ機能です。

MessageDigest オブジェクトは、初期化されて起動されます。データは、MessageDigest オブジェクトを介して update メソッドを使用して処理されます。reset メソッドを呼び出すことにより、任意の時点でダイジェストをリセットできます。更新対象のデータがすべて更新された時点で、digest メソッドの 1 つを呼び出すことにより、ハッシュ計算を終了する必要があります。

digest メソッドは、指定回数の更新に対して 1 回呼び出すだけで済みます。digest メソッドの呼び出しが終了したあと、MessageDigest オブジェクトは初期化状態にリセットされます。

Cloneable インタフェースは、自由に実装できます。クライアントアプリケーションは、複製の生成を試行して CloneNotSupportedException をキャッチすれば、複製の生成が可能かどうかを調べることができます。

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

 try {
     md.update(toChapter1);
     MessageDigest tc1 = md.clone();
     byte[] toChapter1Digest = tc1.digest();
     md.update(toChapter2);
     ...etc.
 } catch (CloneNotSupportedException cnse) {
     throw new DigestException("couldn't make digest of partial content");
 }
 

使用する実装例が複製可能でない場合でも、ダイジェストの数が前もってわかっているときには、いくつかのインスタンスを生成することによって、中間的なダイジェストを計算できます。

このクラスは、歴史的な事情から MessageDigest クラスを継承した abstract クラスになっています。アプリケーションの開発者は、MessageDigest クラスで定義されたメソッドだけに配慮してください。スーパークラスのすべてのメソッドは、メッセージダイジェストアルゴリズムの独自の実装を提供する必要がある暗号サービスプロバイダで使用されることを想定しています。

関連項目:
DigestInputStream, DigestOutputStream

コンストラクタの概要
protected MessageDigest(String algorithm)
          指定されたアルゴリズム名を使用してメッセージダイジェストを作成します。
 
メソッドの概要
 Object clone()
          実装が複製可能な場合は複製を返します。
 byte[] digest()
          パディングなどの最終処理を行なってハッシュ計算を完了します。
 byte[] digest(byte[] input)
          指定されたバイト配列を使用してダイジェストに対して最終の更新を実行したあと、ダイジェスト計算を完了します。
 int digest(byte[] buf, int offset, int len)
          パディングなどの最終処理を行なってハッシュ計算を完了します。
 String getAlgorithm()
          実装の詳細に依存しないアルゴリズムを識別する文字列を返します。
 int getDigestLength()
          ダイジェストの長さをバイトで返します。
static MessageDigest getInstance(String algorithm)
          指定されたダイジェストアルゴリズムを実装する MessageDigest オブジェクトを生成します。
static MessageDigest getInstance(String algorithm, Provider provider)
          指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する MessageDigest オブジェクトを生成します。
static MessageDigest getInstance(String algorithm, String provider)
          指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する MessageDigest オブジェクトを生成します。
 Provider getProvider()
          このメッセージダイジェストオブジェクトのプロバイダを返します。
static boolean isEqual(byte[] digesta, byte[] digestb)
          2 つのダイジェストが等しいかどうかを比較します。
 void reset()
          再利用のためにダイジェストをリセットします。
 String toString()
          このメッセージダイジェストオブジェクトの文字列表現を返します。
 void update(byte input)
          指定されたバイトデータを使ってダイジェストを更新します。
 void update(byte[] input)
          指定されたバイト配列を使用してダイジェストを更新します。
 void update(byte[] input, int offset, int len)
          指定されたバイトデータの配列を使って、指定されたオフセットから開始してダイジェストを更新します。
 
クラス java.security.MessageDigestSpi から継承されたメソッド
engineDigest, engineDigest, engineGetDigestLength, engineReset, engineUpdate, engineUpdate
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

MessageDigest

protected MessageDigest(String algorithm)
指定されたアルゴリズム名を使用してメッセージダイジェストを作成します。

パラメータ:
algorithm - ダイジェストアルゴリズムの標準名。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照してください。
メソッドの詳細

getInstance

public static MessageDigest getInstance(String algorithm)
                                 throws NoSuchAlgorithmException
指定されたダイジェストアルゴリズムを実装する MessageDigest オブジェクトを生成します。要求されたダイジェストアルゴリズムの実装をデフォルトのプロバイダパッケージが提供している場合は、その実装を含む MessageDigest のインスタンスが返されます。指定されたアルゴリズムがデフォルトのパッケージにない場合は、ほかのパッケージが検索されます。

パラメータ:
algorithm - 要求するアルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照してください。
戻り値:
指定されたアルゴリズムを実装する Message Digest オブジェクト
例外:
NoSuchAlgorithmException - アルゴリズムが呼び出し側の環境で使用できない場合

getInstance

public static MessageDigest getInstance(String algorithm,
                                        String provider)
                                 throws NoSuchAlgorithmException,
                                        NoSuchProviderException
指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する MessageDigest オブジェクトを生成します。

パラメータ:
algorithm - 要求するアルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照してください。
provider - プロバイダ名
戻り値:
指定されたアルゴリズムを実装する Message Digest オブジェクト
例外:
NoSuchAlgorithmException - 要求されたプロバイダが提供するパッケージではアルゴリズムを使用できない場合
NoSuchProviderException - プロバイダがその環境で使用できない場合
IllegalArgumentException - プロバイダ名が null または空の場合
関連項目:
Provider

getInstance

public static MessageDigest getInstance(String algorithm,
                                        Provider provider)
                                 throws NoSuchAlgorithmException
指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する MessageDigest オブジェクトを生成します。注:provider を登録する必要はありません。

パラメータ:
algorithm - 要求するアルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照してください。
provider - プロバイダ
戻り値:
指定されたアルゴリズムを実装する Message Digest オブジェクト
例外:
NoSuchAlgorithmException - 要求されたプロバイダが提供するパッケージではアルゴリズムを使用できない場合
IllegalArgumentException - provider が null の場合
導入されたバージョン:
1.4
関連項目:
Provider

getProvider

public final Provider getProvider()
このメッセージダイジェストオブジェクトのプロバイダを返します。

戻り値:
このメッセージダイジェストオブジェクトのプロバイダ

update

public void update(byte input)
指定されたバイトデータを使ってダイジェストを更新します。

パラメータ:
input - ダイジェストを更新するバイト

update

public void update(byte[] input,
                   int offset,
                   int len)
指定されたバイトデータの配列を使って、指定されたオフセットから開始してダイジェストを更新します。

パラメータ:
input - バイトの配列
offset - バイトの配列での開始オフセット
len - offset から開始して使われるバイト数

update

public void update(byte[] input)
指定されたバイト配列を使用してダイジェストを更新します。

パラメータ:
input - バイトの配列

digest

public byte[] digest()
パディングなどの最終処理を行なってハッシュ計算を完了します。この呼び出しのあと、ダイジェストはリセットされます。

戻り値:
結果として得られるハッシュ値に対するバイトデータの配列

digest

public int digest(byte[] buf,
                  int offset,
                  int len)
           throws DigestException
パディングなどの最終処理を行なってハッシュ計算を完了します。この呼び出しのあと、ダイジェストはリセットされます。

パラメータ:
buf - 計算済みのダイジェストの出力先バッファー
offset - 出力バッファーにダイジェストの格納を開始する位置を示すオフセット
len - ダイジェストを割り当てるバッファーのバイト数
戻り値:
buf に格納されたバイト数
例外:
DigestException - エラーが発生した場合

digest

public byte[] digest(byte[] input)
指定されたバイト配列を使用してダイジェストに対して最終の更新を実行したあと、ダイジェスト計算を完了します。すなわち、このメソッドは update(input) メソッドを呼び出して input 配列を update メソッドに渡したあと、digest() メソッドを呼び出します。

パラメータ:
input - ダイジェストの完了前に更新する対象の入力
戻り値:
結果として得られるハッシュ値に対するバイトデータの配列

toString

public String toString()
このメッセージダイジェストオブジェクトの文字列表現を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
このオブジェクトの文字列表現

isEqual

public static boolean isEqual(byte[] digesta,
                              byte[] digestb)
2 つのダイジェストが等しいかどうかを比較します。単純な 1 バイト比較を実行します。

パラメータ:
digesta - 比較する一方のダイジェスト
digestb - 比較する他方のダイジェスト
戻り値:
ダイジェストが等しい場合は true、そうでない場合は false

reset

public void reset()
再利用のためにダイジェストをリセットします。


getAlgorithm

public final String getAlgorithm()
実装の詳細に依存しないアルゴリズムを識別する文字列を返します。名前は、標準的な「SHA」、「MD5」などの Java セキュリティー名にする必要があります。アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照してください。

戻り値:
アルゴリズムの名前

getDigestLength

public final int getDigestLength()
ダイジェストの長さをバイトで返します。この処理がプロバイダによってサポートされておらず、かつ実装が複製可能ではない場合は 0 を返します。

戻り値:
バイト単位のダイジェスト長。この処理がプロバイダによってサポートされておらず、かつ実装が複製可能ではない場合は 0
導入されたバージョン:
1.2

clone

public Object clone()
             throws CloneNotSupportedException
実装が複製可能な場合は複製を返します。

オーバーライド:
クラス MessageDigestSpi 内の clone
戻り値:
実装が複製可能な場合は複製
例外:
CloneNotSupportedException - Cloneable をサポートしていない実装で呼び出された場合
関連項目:
Cloneable

CDC 1.1.2

Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. Use of this specification is subject to license terms.