全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
クラス 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
-
MessageDigest(String)
- 指定されたアルゴリズム名を使用してメッセージダイジェストを作成する。
-
clone()
-
実装がクローン可能である場合には、そのクローンを返す。
-
digest()
- パディングなどの最終操作を行ってハッシュ計算を完了する。
-
digest(byte[])
- 指定されたバイト配列を使用してダイジェストに対して最終の更新を実行した後、ダイジェスト計算を完了する。
-
engineDigest()
- SPI: パディングなどの最終操作を行ってハッシュ計算を完了する。
-
engineReset()
- SPI: 次の使用のためにダイジェストをリセットする。
-
engineUpdate(byte)
- SPI: 指定されたバイトを使用してダイジェストを更新する。
-
engineUpdate(byte[], int, int)
- SPI: 指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新する。
-
getAlgorithm()
-
実装の詳細に関係ないアルゴリズムを識別する文字例を返す。
-
getInstance(String)
- 指定されたダイジェストアルゴリズムを実装する MessageDigest オブジェクトを生成する。
-
getInstance(String, String)
- 指定されたアルゴリズムがプロバイダから使用可能である場合に、指定されたプロバイダから供給されるそのアルゴリズムを実装する MessageDigest オブジェクトを生成する。
-
isEqual(byte[], byte[])
- 2 つのダイジェストが等しいかどうかを比較する。
-
reset()
- 次の使用のためにダイジェストをリセットする。
-
toString()
- このメッセージダイジェストオブジェクトの文字列表現を返す。
-
update(byte)
- 指定されたバイトを使用してダイジェストを更新する。
-
update(byte[])
- 指定されたバイト配列を使用してダイジェストを更新する。
-
update(byte[], int, int)
- 指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新する。
MessageDigest
protected MessageDigest(String algorithm)
- 指定されたアルゴリズム名を使用してメッセージダイジェストを作成します。
- パラメータ:
- algorithm - ダイジェストアルゴリズムの標準名
アルゴリズムの標準名については、
Java Cryptography Architecture API Specification & Reference の付録 A を参照する。
getInstance
public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
- 指定されたダイジェストアルゴリズムを実装する MessageDigest オブジェクトを生成します。デフォルトのプロバイダ パッケージがそのアルゴリズムを実装する MessageDigest サブクラスを含んでいる場合には、そのサブクラスのインスタンスが返ります。アルゴリズムがデフォルトのパッケージで使用可能でない場合には、ほかのパッケージが検索されます。
- パラメータ:
- algorithm - 要求するアルゴリズムの名前
アルゴリズムの標準名については、
Java Cryptography Architecture API Specification & Reference の付録 A を参照する。
- 返り値:
- 指定されたアルゴリズムを実装する Message Digest オブジェクト
- 例外: NoSuchAlgorithmException
- アルゴリズムが呼び出し側の環境で使用可能でない場合
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
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 byte[] digest(byte 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」、「MD」などの) Java Security 名にする必要があります。
アルゴリズムの標準名については、
Java Cryptography Architecture API Specification & Reference の付録 A を参照してください。
engineUpdate
protected abstract void engineUpdate(byte input)
- SPI: 指定されたバイトを使用してダイジェストを更新する
- パラメータ:
- input - 更新に使用するバイト
engineUpdate
protected abstract void engineUpdate(byte input[],
int offset,
int len)
- SPI: 指定されたオフセットを起点として、指定されたバイト配列を使用してダイジェストを更新する。これは、ダイジェストの最終処理が終了している場合には、ノーオペレーションのはずである。
- パラメータ:
- input - 更新に使用するバイト配列
- offset - バイト配列の起点からのオフセット
- len - 使用を開始する
offset
からのバイト数
engineDigest
protected abstract byte[] engineDigest()
- SPI: パディングなどの最終操作を行ってハッシュ計算を完了する。
engineDigest
の呼び出しが終了すると、エンジンはリセットされるはずである (reset を参照)。リセット操作はエンジンを実装する人の責任において行なうこと
- 返り値:
- 結果のハッシュ値に対するバイト配列
engineReset
protected abstract void engineReset()
- SPI: 次の使用のためにダイジェストをリセットする
clone
public Object clone() throws CloneNotSupportedException
- 実装がクローン可能である場合にはクローンを返します。
- 返り値:
- 実装がクローン可能である場合にはクローンを返す
- 例外: CloneNotSupportedException
-
Cloneable
をサポートしていない実装に対して呼ばれた場合
- オーバーライド:
- クラス clone の Object
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス