public abstract class MessageDigest extends MessageDigestSpi
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");
}
使用する実装例が複製可能でない場合でも、ダイジェストの数が前もってわかっているときには、いくつかのインスタンスを生成することによって、中間的なダイジェストを計算できます。
このクラスは、歴史的な事情からMessageDigestSpi
クラスから拡張された抽象クラスになっていることに注意してください。アプリケーションの開発者は、MessageDigest
クラスで定義されたメソッドだけに配慮してください。スーパー・クラスのすべてのメソッドは、メッセージ・ダイジェスト・アルゴリズムの独自の実装を提供する必要がある暗号サービス・プロバイダで使用されることを想定しています。
Javaプラットフォームの実装は、すべて次の標準のMessageDigest
アルゴリズムをサポートする必要があります。
MD5
SHA-1
SHA-256
修飾子 | コンストラクタと説明 |
---|---|
protected |
MessageDigest(String algorithm)
指定されたアルゴリズム名を使用してメッセージ・ダイジェストを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
Object |
clone()
実装が複製可能な場合は複製を返します。
|
byte[] |
digest()
パディングなどの最終処理を行ってハッシュ計算を完了します。
|
byte[] |
digest(byte[] input)
指定されたバイト配列を使用してダイジェストに対して最終の更新を実行したあと、ダイジェスト計算を完了します。
|
int |
digest(byte[] buf, int offset, int len)
パディングなどの最終処理を行ってハッシュ計算を完了します。
|
String |
getAlgorithm()
実装の詳細に依存しないアルゴリズムを識別する文字列を返します。
|
int |
getDigestLength()
ダイジェストの長さをバイトで返します。この処理がプロバイダによってサポートされておらず、かつ実装が複製可能ではない場合は0を返します。
|
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)
指定されたバイト・データの配列を使って、指定されたオフセットから開始してダイジェストを更新します。
|
void |
update(ByteBuffer input)
指定されたByteBufferを使用してダイジェストを更新します。
|
engineDigest, engineDigest, engineGetDigestLength, engineReset, engineUpdate, engineUpdate, engineUpdate
protected MessageDigest(String algorithm)
algorithm
- ダイジェスト・アルゴリズムの標準名。アルゴリズムの標準名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMessageDigestのセクションを参照。public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。指定されたアルゴリズムをサポートする最初のProviderのMessageDigestSpi実装をカプセル化する新しいMessageDigestオブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
algorithm
- 要求するアルゴリズムの名前。アルゴリズムの標準名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMessageDigestのセクションを参照。NoSuchAlgorithmException
- 指定したアルゴリズムのMessageDigestSpi実装をサポートするプロバイダが存在しない場合。Provider
public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
指定されたプロバイダのMessageDigestSpi実装をカプセル化する新しいMessageDigestオブジェクトが返されます。指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
algorithm
- 要求するアルゴリズムの名前。アルゴリズムの標準名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMessageDigestのセクションを参照。provider
- プロバイダ名。NoSuchAlgorithmException
- 指定されたプロバイダに指定されたアルゴリズムのMessageDigestSpi実装がない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合。IllegalArgumentException
- プロバイダ名がnullまたは空の場合。Provider
public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
指定されたProviderオブジェクトのMessageDigestSpi実装をカプセル化する新しいMessageDigestオブジェクトが返されます。指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
algorithm
- 要求するアルゴリズムの名前。アルゴリズムの標準名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMessageDigestのセクションを参照。provider
- プロバイダ。NoSuchAlgorithmException
- 指定されたProviderオブジェクトに指定されたアルゴリズムのMessageDigestSpiの実装がない場合。IllegalArgumentException
- 指定されたプロバイダがnullの場合。Provider
public final Provider getProvider()
public void update(byte input)
input
- ダイジェストを更新するバイト。public void update(byte[] input, int offset, int len)
input
- バイトの配列。offset
- バイトの配列での開始オフセット。len
- 使用するバイト数(offset
から開始)。public void update(byte[] input)
input
- バイトの配列。public final void update(ByteBuffer input)
input.position()
位置から始まるinput.remaining()
バイトが使用されます。終了時に、バッファの位置はリミットに等しくなりますが、リミットは変更されません。input
- ByteBufferpublic byte[] digest()
public int digest(byte[] buf, int offset, int len) throws DigestException
buf
- 計算済みのダイジェストの出力先バッファoffset
- 出力バッファにダイジェストの格納を開始する位置を示すオフセットlen
- ダイジェストを割り当てるバッファのバイト数buf
に格納されたバイト数DigestException
- エラーが発生した場合。public byte[] digest(byte[] input)
update(input)
メソッドを呼び出してinput配列をupdate
メソッドに渡したあと、digest()
メソッドを呼び出します。input
- ダイジェストの完了前に更新する対象の入力。public String toString()
public static boolean isEqual(byte[] digesta, byte[] digestb)
digesta
- 比較する一方のダイジェスト。digestb
- 比較する他方のダイジェスト。public void reset()
public final String getAlgorithm()
public final int getDigestLength()
public Object clone() throws CloneNotSupportedException
clone
、クラス: MessageDigestSpi
CloneNotSupportedException
- Cloneable
をサポートしていない実装で呼び出された場合。Cloneable
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.