全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.security.MessageDigest

java.lang.Object
   |
   +----java.security.MessageDigest

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

Java Security のほかのアルゴリズムベースのクラスのように、 MessageDigest には以下の 2 つの主な構成要素があります。

メッセージダイジェスト API (アプリケーションプログラムインタフェース)
これは、アプリケーションが、メッセージダイジェストサービスを必要とする場合に呼び出すメソッドに対するインタフェースである。この API は公開メソッドによってすべて構成されている。
メッセージダイジェスト SPI (サービスプロバイダインタフェース)
これは、特定のアルゴリズムを供給するプロバイダが実装するインタフェースである。先頭に engine というプリフィックス名をもつメソッドによってすべて構成されている。各メソッドは、対応する名前のパブリック API メソッドによって呼び出される。たとえば、engineReset メソッドは reset メソッドによって呼ばれている。SPI メソッドは abstract なので、プロバイダが詳細に実装しなければならない。

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

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

実装形式では、Cloneableなインタフェースを自由に実装できます。またCloneableインタフェースを実装することによってクライアントアプリケーションは、クローンを実行する前に instanceof Cloneable を使用してクローン可能かをテストすることができます。

 MessageDigest md = MessageDigest.getInstance("SHA");
 if (md instanceof Cloneable) {
     md.update(toChapter1);
     MessageDigest tc1 = md.clone();
     byte[] toChapter1Digest = tc1.digest;
     md.update(toChapter2);
     ...etc.
 } else {
     throw new DigestException("couldn't make digest of partial content");
 }
 

指定の実装例がクローン可能でない場合でも、ダイジェストの数が前もって分かっているときには、いくつかのインスタンスをインスタンス化することによって、中間的なダイジェストを計算することが可能なことに注意してください。

参照:
DigestInputStream, DigestOutputStream

Constructor Index

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

Method Index

 o clone()
実装がクローン可能である場合には、そのクローンを返す。
 o digest()
パディングなどの最終操作を行ってハッシュ計算を完了する。
 o digest(byte[])
指定されたバイト配列を使用してダイジェストに対して最終の更新を実行した後、ダイジェスト計算を完了する。
 o engineDigest()
SPI: パディングなどの最終操作を行ってハッシュ計算を完了する。
 o engineReset()
SPI: 次の使用のためにダイジェストをリセットする。
 o engineUpdate(byte)
SPI: 指定されたバイトを使用してダイジェストを更新する。
 o engineUpdate(byte[], int, int)
SPI: 指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新する。
 o getAlgorithm()
実装の詳細に関係ないアルゴリズムを識別する文字例を返す。
 o getInstance(String)
指定されたダイジェストアルゴリズムを実装する MessageDigest オブジェクトを生成する。
 o getInstance(String, String)
指定されたアルゴリズムがプロバイダから使用可能である場合に、指定されたプロバイダから供給されるそのアルゴリズムを実装する MessageDigest オブジェクトを生成する。
 o isEqual(byte[], byte[])
2 つのダイジェストが等しいかどうかを比較する。
 o reset()
次の使用のためにダイジェストをリセットする。
 o toString()
このメッセージダイジェストオブジェクトの文字列表現を返す。
 o update(byte)
指定されたバイトを使用してダイジェストを更新する。
 o update(byte[])
指定されたバイト配列を使用してダイジェストを更新する。
 o update(byte[], int, int)
指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新する。

Constructors

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

パラメータ:
algorithm - ダイジェストアルゴリズムの標準名 アルゴリズムの標準名については、 Java Cryptography Architecture API Specification & Reference の付録 A を参照する。

Methods

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

パラメータ:
algorithm - 要求するアルゴリズムの名前 アルゴリズムの標準名については、 Java Cryptography Architecture API Specification & Reference の付録 A を参照する。
返り値:
指定されたアルゴリズムを実装する Message Digest オブジェクト
例外: NoSuchAlgorithmException
アルゴリズムが呼び出し側の環境で使用可能でない場合
 o getInstance
  public static MessageDigest getInstance(String algorithm,
                                          String provider) throws NoSuchAlgorithmException, NoSuchProviderException
指定されたアルゴリズムがプロバイダから使用可能である場合に、指定されたプロバイダから供給されるそのアルゴリズムを実装する MessageDigest オブジェクトを生成します。

パラメータ:
algorithm - 要求するアルゴリズムの名前. アルゴリズムの標準名については、 Java Cryptography Architecture API Specification & Reference の付録 A を参照する。
provider - プロバイダの名前
返り値:
指定されたアルゴリズムを実装する Message Digest オブジェクト
例外: NoSuchAlgorithmException
アルゴリズムが要求されているプロバイダが供給するパッケージの中で使用可能でない場合
例外: NoSuchProviderException
プロバイダが環境の中で使用可能でない場合
参照:
Provider
 o update
  public void update(byte input)
指定されたバイトを使用してダイジェストを更新します。

パラメータ:
input - ダイジェストを更新するバイト.
 o update
  public void update(byte input[],
                     int offset,
                     int len)
指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新します。

パラメータ:
input - バイト配列
offset - バイト配列の起点からのオフセット
len - 使用を開始する offsetからのバイト数
 o update
  public void update(byte input[])
指定されたバイト配列を使用してダイジェストを更新します。

パラメータ:
input - バイト配列
 o digest
  public byte[] digest()
パディングなどの最終操作を行ってハッシュ計算を完了します。この呼び出しの後、ダイジェストはリセットされます。

返り値:
結果のハッシュ値に対するバイト配列
 o digest
  public byte[] digest(byte input[])
指定されたバイト配列を使用してダイジェストに対して最終の更新を実行した後、ダイジェスト計算を完了します。すなわち、このメソッドは、配列に対してまず update を呼び、その後 digest() を呼び出します。

パラメータ:
input - ダイジェストの完了前に更新する対象の入力
返り値:
結果のハッシュ値に対するバイト配列
 o toString
  public String toString()
このメッセージダイジェストオブジェクトの文字列表現を返します。

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

パラメータ:
digesta - 比較する一方のダイジェスト
digestb - 比較する他方のダイジェスト
返り値:
ダイジェストが等しい場合には true、そうでない場合には false が返る。
 o reset
  public void reset()
次の使用のためにダイジェストをリセットします。

 o getAlgorithm
  public final String getAlgorithm()
実装の詳細に関係のないアルゴリズムを識別する文字列を返します。名前は、標準的な (「SHA」、「MD」などの) Java Security 名にする必要があります。 アルゴリズムの標準名については、 Java Cryptography Architecture API Specification & Reference の付録 A を参照してください。

 o engineUpdate
  protected abstract void engineUpdate(byte input)
SPI: 指定されたバイトを使用してダイジェストを更新する

パラメータ:
input - 更新に使用するバイト
 o engineUpdate
  protected abstract void engineUpdate(byte input[],
                                       int offset,
                                       int len)
SPI: 指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新する。これは、ダイジェストの最終処理が終了している場合には、ノーオペレーションのはずである。

パラメータ:
input - 更新に使用するバイト配列
offset - バイト配列の起点からのオフセット
len - 使用を開始する offsetからのバイト数
 o engineDigest
  protected abstract byte[] engineDigest()
SPI: パディングなどの最終操作を行ってハッシュ計算を完了する。 engineDigest の呼び出しが終了すると、エンジンはリセットされるはずである (reset を参照)。リセット操作はエンジンを実装する人の責任において行なうこと

返り値:
結果のハッシュ値に対するバイト配列
 o engineReset
  protected abstract void engineReset()
SPI: 次の使用のためにダイジェストをリセットする

 o clone
  public Object clone() throws CloneNotSupportedException
実装がクローン可能である場合にはクローンを返します。

返り値:
実装がクローン可能である場合にはクローンを返す
例外: CloneNotSupportedException
Cloneable をサポートしていない実装に対して呼ばれた場合
オーバーライド:
クラス cloneObject

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス