|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.security.MessageDigestSpi | +--java.security.MessageDigest
この 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 |
コンストラクタの詳細 |
protected MessageDigest(String algorithm)
algorithm
- ダイジェストアルゴリズムの標準名。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照メソッドの詳細 |
public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
algorithm
- 要求されたアルゴリズムの標準的な名前。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照
NoSuchAlgorithmException
- アルゴリズムが呼び出し側の環境で使用可能でない場合public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
algorithm
- 要求されたアルゴリズムの標準的な名前。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照provider
- プロバイダ名
NoSuchAlgorithmException
- 要求されたプロバイダが提供するパッケージではアルゴリズムを使用できない場合
NoSuchProviderException
- プロバイダがその環境で使用できない場合
IllegalArgumentException
- プロバイダの名前が null か空の場合Provider
public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
provider
を登録する必要はありません。
algorithm
- 要求されたアルゴリズムの標準的な名前。アルゴリズムの標準名については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照provider
- プロバイダ
NoSuchAlgorithmException
- 要求されたプロバイダが提供するパッケージではアルゴリズムを使用できない場合
IllegalArgumentException
- provider
が 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 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()
Object
内の 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
MessageDigestSpi
内の clone
CloneNotSupportedException
- Cloneable
をサポートしていない実装で呼び出された場合
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.