- java.lang.Object
- 
- java.security.MessageDigestSpi
- 
- java.security.MessageDigest
 
 
- 
 public abstract class MessageDigest extends MessageDigestSpi このMessageDigestクラスは、SHA-1やSHA-256などのメッセージ・ダイジェスト・アルゴリズムの機能を提供します。 メッセージ・ダイジェストは、任意サイズのデータを取得して固定長のハッシュ値を出力する安全な一方向のハッシュ機能です。MessageDigestオブジェクトは、初期化されて起動されます。 データは、それを介して updateメソッドを使用して処理されます。resetメソッドを呼び出すことにより、任意の時点でダイジェストをリセットできます。 更新対象のデータがすべて更新された時点で、digestメソッドの1つを呼び出すことにより、ハッシュ計算を終了する必要があります。digestメソッドは、指定回数の更新に対して1回呼び出すだけで済みます。digestメソッドの呼出しが終了したあと、MessageDigestオブジェクトは初期化状態にリセットされます。Cloneableインタフェースは、自由に実装できます。 クライアント・アプリケーションは、複製の生成を試行してCloneNotSupportedExceptionをキャッチすれば、複製の生成が可能かどうかを調べることができます。 MessageDigest md = MessageDigest.getInstance("SHA-256"); 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
 - 導入されたバージョン:
- 1.1
- 関連項目:
- DigestInputStream,- DigestOutputStream
 
- 
- 
コンストラクタのサマリーコンストラクタ 修飾子 コンストラクタ 説明 protectedMessageDigest(String algorithm)指定されたアルゴリズム名を使用してメッセージ・ダイジェストを作成します。
 - 
メソッドのサマリー修飾子と型 メソッド 説明 Objectclone()実装が複製可能な場合は複製を返します。byte[]digest()パディングなどの最終処理を行ってハッシュ計算を完了します。byte[]digest(byte[] input)指定されたバイト配列を使用してダイジェストに対して最終の更新を実行したあと、ダイジェスト計算を完了します。intdigest(byte[] buf, int offset, int len)パディングなどの最終処理を行ってハッシュ計算を完了します。StringgetAlgorithm()実装の詳細に依存しないアルゴリズムを識別する文字列を返します。intgetDigestLength()ダイジェストの長さをバイトで返します。この処理がプロバイダによってサポートされておらず、かつ実装が複製可能ではない場合は0を返します。static MessageDigestgetInstance(String algorithm)指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。static MessageDigestgetInstance(String algorithm, String provider)指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。static MessageDigestgetInstance(String algorithm, Provider provider)指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。ProvidergetProvider()このメッセージ・ダイジェスト・オブジェクトのプロバイダを返します。static booleanisEqual(byte[] digesta, byte[] digestb)2つのダイジェストが等しいかどうかを比較します。voidreset()再利用のためにダイジェストをリセットします。StringtoString()このメッセージ・ダイジェスト・オブジェクトの文字列表現を返します。voidupdate(byte input)指定されたバイト・データを使ってダイジェストを更新します。voidupdate(byte[] input)指定されたバイト配列を使用してダイジェストを更新します。voidupdate(byte[] input, int offset, int len)指定されたバイト・データの配列を使って、指定されたオフセットから開始してダイジェストを更新します。voidupdate(ByteBuffer input)指定されたByteBufferを使用してダイジェストを更新します。- 
クラス java.security.MessageDigestSpiで宣言されたメソッドengineDigest, engineDigest, engineGetDigestLength, engineReset, engineUpdate, engineUpdate, engineUpdate
 
- 
 
- 
- 
- 
コンストラクタの詳細- 
MessageDigestprotected MessageDigest(String algorithm) 指定されたアルゴリズム名を使用してメッセージ・ダイジェストを作成します。- パラメータ:
- algorithm- ダイジェスト・アルゴリズムの標準名。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMessageDigestセクションを参照してください。
 
 
- 
 - 
メソッドの詳細- 
getInstancepublic static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException 指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のProviderのMessageDigestSpi実装をカプセル化する新しいMessageDigestオブジェクトが返されます。 登録済みプロバイダのリストは、 Security.getProviders()メソッド経由で取得できます。- 実装上の注意:
- JDKリファレンス実装では、jdk.security.provider.preferredSecurityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
- パラメータ:
- algorithm- 要求するアルゴリズムの名前。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMessageDigestセクションを参照してください。
- 戻り値:
- 指定されたアルゴリズムを実装するMessageDigestオブジェクト
- 例外:
- NoSuchAlgorithmException-- Providerが、指定されたアルゴリズムの- MessageDigestSpi実装をサポートしていない場合
- NullPointerException-- algorithmが- nullである場合
- 関連項目:
- Provider
 
 - 
getInstancepublic static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。指定されたプロバイダのMessageDigestSpi実装をカプセル化する新しいMessageDigestオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。 登録済みプロバイダのリストは、 Security.getProviders()メソッド経由で取得できます。- パラメータ:
- algorithm- 要求するアルゴリズムの名前。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMessageDigestセクションを参照してください。
- provider- プロバイダ名。
- 戻り値:
- 指定されたアルゴリズムを実装するMessageDigestオブジェクト
- 例外:
- IllegalArgumentException- プロバイダ名が- nullまたは空の場合
- NoSuchAlgorithmException- 指定されたアルゴリズムの- MessageDigestSpi実装が、指定されたプロバイダから利用可能でない場合
- NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
- NullPointerException-- algorithmが- nullである場合
- 関連項目:
- Provider
 
 - 
getInstancepublic static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。指定されたProviderオブジェクトのMessageDigestSpi実装をカプセル化する新しいMessageDigestオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。 - パラメータ:
- algorithm- 要求するアルゴリズムの名前。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMessageDigestセクションを参照してください。
- provider- プロバイダ
- 戻り値:
- 指定されたアルゴリズムを実装するMessageDigestオブジェクト
- 例外:
- IllegalArgumentException- 指定されたプロバイダが- nullの場合
- NoSuchAlgorithmException- 指定されたアルゴリズムの- MessageDigestSpi実装が、指定された- Providerオブジェクトから使用できない場合
- NullPointerException-- algorithmが- nullである場合
- 導入されたバージョン:
- 1.4
- 関連項目:
- Provider
 
 - 
getProviderpublic final Provider getProvider() このメッセージ・ダイジェスト・オブジェクトのプロバイダを返します。- 戻り値:
- このメッセージ・ダイジェスト・オブジェクトのプロバイダ
 
 - 
updatepublic void update(byte input) 指定されたバイト・データを使ってダイジェストを更新します。- パラメータ:
- input- ダイジェストを更新するバイト。
 
 - 
updatepublic void update(byte[] input, int offset, int len)指定されたバイト・データの配列を使って、指定されたオフセットから開始してダイジェストを更新します。- パラメータ:
- input- バイトの配列。
- offset- バイトの配列での開始オフセット。
- len- 使用するバイト数(- offsetから開始)。
 
 - 
updatepublic void update(byte[] input) 指定されたバイト配列を使用してダイジェストを更新します。- パラメータ:
- input- バイトの配列。
 
 - 
updatepublic final void update(ByteBuffer input) 指定されたByteBufferを使用してダイジェストを更新します。 ダイジェストの更新時には、input.position()位置から始まるinput.remaining()バイトが使用されます。 終了時に、バッファの位置はリミットに等しくなりますが、リミットは変更されません。- パラメータ:
- input- ByteBuffer
- 導入されたバージョン:
- 1.5
 
 - 
digestpublic byte[] digest() パディングなどの最終処理を行ってハッシュ計算を完了します。 この呼出しのあと、ダイジェストはリセットされます。- 戻り値:
- 結果として得られるハッシュ値に対するバイト・データの配列。
 
 - 
digestpublic int digest(byte[] buf, int offset, int len) throws DigestExceptionパディングなどの最終処理を行ってハッシュ計算を完了します。 この呼出しのあと、ダイジェストはリセットされます。- パラメータ:
- buf- 計算済みのダイジェストの出力先バッファ
- offset- 出力バッファにダイジェストの格納を開始する位置を示すオフセット
- len- ダイジェストを割り当てるバッファのバイト数
- 戻り値:
- bufに格納されたバイト数
- 例外:
- DigestException- エラーが発生した場合。
 
 - 
digestpublic byte[] digest(byte[] input) 指定されたバイト配列を使用してダイジェストに対して最終の更新を実行したあと、ダイジェスト計算を完了します。 すなわち、このメソッドは最初にupdate(input)メソッドを呼び出してinput配列をupdateメソッドに渡したあと、digest()メソッドを呼び出します。- パラメータ:
- input- ダイジェストの完了前に更新する対象の入力。
- 戻り値:
- 結果として得られるハッシュ値に対するバイト・データの配列。
 
 - 
toStringpublic String toString() このメッセージ・ダイジェスト・オブジェクトの文字列表現を返します。
 - 
isEqualpublic static boolean isEqual(byte[] digesta, byte[] digestb)2つのダイジェストが等しいかどうかを比較します。 同じ長さで、対応する位置のすべてのバイトが等しい場合、2つのダイジェストは等しくなります。- 実装上の注意:
- ダイジェストが同じ長さであれば、すべてのバイトが検査されて等価性が決定されます。
- パラメータ:
- digesta- 比較する一方のダイジェスト。
- digestb- 比較する他方のダイジェスト。
- 戻り値:
- ダイジェストが等しい場合はtrue、そうでない場合はfalse。
 
 - 
resetpublic void reset() 再利用のためにダイジェストをリセットします。
 - 
getAlgorithmpublic final String getAlgorithm() 実装の詳細に依存しないアルゴリズムを識別する文字列を返します。 この名前は、標準Javaセキュリティ名("SHA-256")でなければなりません。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMessageDigestセクションを参照してください。- 戻り値:
- アルゴリズムの名前
 
 - 
getDigestLengthpublic final int getDigestLength() ダイジェストの長さをバイトで返します。この処理がプロバイダによってサポートされておらず、かつ実装が複製可能ではない場合は0を返します。- 戻り値:
- バイト単位のダイジェスト長。この処理がプロバイダによってサポートされておらず、かつ実装が複製可能ではない場合は0
- 導入されたバージョン:
- 1.2
 
 - 
clonepublic Object clone() throws CloneNotSupportedException 実装が複製可能な場合は複製を返します。- オーバーライド:
- clone、クラス:- MessageDigestSpi
- 戻り値:
- 実装が複製可能な場合は複製。
- 例外:
- CloneNotSupportedException-- Cloneableをサポートしていない実装で呼び出された場合。
- 関連項目:
- Cloneable
 
 
- 
 
-