JAva MessageDigestクラスの役割

6684 ワード

一、構造と概要:
java.lang.Object
  java.security.MessageDigestSpi
      java.security.MessageDigest
  :public abstract class MessageDigest extends MessageDigestSpi
このMessageDigestクラスは、MD 5またはSHAアルゴリズムなどのアプリケーションに情報要約アルゴリズムの機能を提供する.情報要約は、任意のサイズのデータを受信し、固定長のハッシュ値を出力する安全な一方向ハッシュ関数である.MessageDigestオブジェクトの初期化が開始されます.このオブジェクトはupdateメソッドを使用してデータを処理します.resetメソッドを呼び出してサマリーをリセットすることは、いつでもできます.更新が必要なすべてのデータが更新されると、digestメソッドの1つを呼び出してハッシュ計算を完了する必要があります.所定の数の更新データの場合、digestメソッドは1回しか呼び出されません.digestが呼び出されると、MessageDigestオブジェクトは初期状態に再設定されます.このインプリメンテーションは、Cloneableインタフェースを実装するかどうかを任意に選択できます.クライアント・アプリケーションでは、CloneNotSupportedExceptionのコピーとキャプチャを試みることで、レプリケーション性をテストできます.
[java] view plain
copy
print ?
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 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クラスで定義された方法に注意するだけです.スーパークラスのすべての方法は、独自の情報要約アルゴリズムを提供して実装したい暗号化サービスプロバイダに使用される.
二、構造方法
 
   
protected MessageDigest(String algorithm)                  。 
  :algorithm -          。

三、方法の詳細
1、public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
            MessageDigest   。 

このメソッドは、優先Providerから登録されたセキュリティプロバイダのリストを巡回します.指定したアルゴリズムをサポートする最初のProviderのMessageDigestSpiによって実装された新しいMessageDigestオブジェクトをカプセル化します.登録済みプロバイダのリストは、Security.getProviders()メソッドで取得できます.
パラメータ:algorithm-要求されたアルゴリズムの名前.
戻る:指定したアルゴリズムのMessage Digestオブジェクトを実装します.
投げ出す:NoSuchAlgorithmException-Providerが指定したアルゴリズムをサポートしていない場合のMessageDigestSpi実装
 
2、public static MessageDigest getInstance(String algorithm, String provider)   throws NoSuchAlgorithmException,  NoSuchProviderException
指定したサマリーアルゴリズムを実装するMessageDigestオブジェクトを返します.
指定したプロバイダから取得されたMessageDigestSpiインプリメンテーションをカプセル化した新しいMessageDigestオブジェクトを返します.プロバイダを指定するには、セキュリティプロバイダのリストに登録する必要があります.
なお、登録されたプロバイダのリストは、Security.getProviders()の方法で取得することができる.
パラメータ:algorithm-要求されたアルゴリズムの名前.provider-プロバイダの名前.
戻る:指定したアルゴリズムを実装するMessageDigestオブジェクト.
放出:NoSuchAlgorithmException-指定されたアルゴリズムのMessageDigestSpiインプリメンテーションが指定されたプロバイダから取得できない場合.            NoSuchProviderException-指定されたプロバイダがセキュリティプロバイダリストに登録されていない場合.IllegalArgumentException-プロバイダ名がnullまたはnullの場合.
 
3、public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
指定したサマリーアルゴリズムを実装するMessageDigestオブジェクトを返します.
指定したProviderオブジェクトから取り出した、MessageDigestSpiインプリメンテーションをカプセル化した新しいMessageDigestオブジェクトを返します.Providerオブジェクトをプロバイダリストに登録する必要はありません.
パラメータ:algorithm-要求されたアルゴリズムの名前.provider-プロバイダ.
戻る:指定したアルゴリズムを実装するMessageDigestオブジェクト.
放出:NoSuchAlgorithmException-指定アルゴリズムのMessageDigestSpiインプリメンテーションが指定されたプロバイダオブジェクトから取得できない場合.IllegalArgumentException-指定されたプロバイダがnullである場合.
 
4、public final Provider getProvider()   この情報サマリーオブジェクトのプロバイダを返します.
 
5、public void update(byte input)       指定したバイトを使用してサマリーを更新します.
パラメータ:input-要約を更新するバイト.
 
6、public void update(byte[] input,  int offset,  int len)     指定したbyte配列を使用して、指定したオフセット量からサマリーを更新します.
パラメータ:input-byte配列.      offset-byte配列のオフセット量は、ここから開始します.      len-offsetから始まる使用するバイト数.
 
7、public void update(byte[] input)     指定したbyte配列を使用してサマリーを更新します.
パラメータ:input-byte配列.
 
8、public final void update(ByteBuffer input)
指定したByteBufferを使用してサマリーを更新します.要約は、input.position()から始まるinput.remaining()バイトを使用して更新される.いったん戻ると、バッファの位置はその限界に等しい.その限界は変更されません.
パラメータ:input-ByteBuffer
 
10、public byte[] digest()      ハッシュ計算は、パディングなどの最終的な操作を実行することによって完了する.このメソッドを呼び出すと、サマリーがリセットされます.
戻ります:ハッシュ値の結果を格納するbyte配列.
 
11、public int digest(byte[] buf,int offset, int len)  throws DigestException
ハッシュ計算は、パディングなどの最終的な操作を実行することによって完了する.このメソッドを呼び出すと、サマリーがリセットされます.
パラメータ:buf-計算要約を格納する出力バッファoffset-出力バッファのオフセット量.ここから要約を格納します.len-bufで要約に割り当てられたバイト数
戻り:bufに格納されたバイト数
放出:DigestException-エラーが発生した場合.
 
12、public byte[] digest(byte[] input)
指定したbyte配列を使用してサマリーを最後に更新し、サマリー計算を完了します.すなわち、この方法は、まずupdate(input)を呼び出し、 updateの方法にinput配列を渡し、digest()を呼び出す.
パラメータ:input-サマリー計算が完了する前に更新する入力.
戻ります:ハッシュ値の結果を格納するbyte配列.
 
13、public String toString()    この情報サマリーオブジェクトの文字列表現を返します.
カバー:クラスObjecttoString≪戻る|Return|emdw≫:オブジェクトの文字列表現.
 
14、public static boolean isEqual(byte[] digesta, byte[] digestb)    2つの要約の同等性を比較します.簡単なバイト比較をします.
パラメータ:digesta-比較するサマリーの1つです.
               digestb-比較する別の要約.
戻る:サマリーが等しい場合はtrueを返します.そうでなければfalseに戻ります
 
15、public void reset()     再使用のためにサマリーをリセットします.
 
16、public final String getAlgorithm()   実装の詳細とは独立したアルゴリズムを識別する文字列を返します.この名前は、標準的なJavaセキュリティ名(SHA、MD 5など)である必要があります.標準アルゴリズム名については、Java Cryptography Architecture API Specification&Referenceの付録Aを参照してください.
戻る:アルゴリズムの名前
 
17、public final int getDigestLength()   バイト単位のサマリー長を返し、プロバイダがこの操作をサポートせず、インプリメンテーションが複製できない場合は0を返します.
≪戻る|Return|emdw≫:バイト単位のサマリー長で、プロバイダがこの操作をサポートせず、インプリメンテーションが複製できない場合は0を返します.
 
18、public Object clone()  throws CloneNotSupportedException   インプリメンテーションがコピー可能である場合、コピーが返されます.
カバー:クラスMessageDigestSpiclone≪戻る|Return|emdw≫:インプリメンテーションがコピー可能である場合、コピーが返されます.
投げ出し:CloneNotSupportedException-Cloneableがサポートされていないインプリメンテーションに対してこのメソッドを呼び出す場合.