NTT DOCOMO and Hitachi Kokusai Electric Know-how & Confidential

com.docomo_um.util
クラス MessageDigest

java.lang.Object
  上位を拡張 com.docomo_um.util.MessageDigest

public abstract class MessageDigest
extends java.lang.Object

ハッシュアルゴリズムの機能を提供するクラスです。 本クラスは、任意サイズのデータを取得して固定長のハッシュ値を出力する機能を提供します。 出力の長さはハッシュアルゴリズムに依存する固定長です。

ハッシュ値を計算するMessageDigestオブジェクトを得るためには、 getInstance(String) メソッドにハッシュアルゴリズム名を指定します。 例えば、MD5アルゴリズムを使用するMessageDigestオブジェクトを得る場合、 getInstance(MessageDigest.HASH_ALGORITHM_TYPE_MD5) を使用します。

update(byte)メソッドを使用してハッシュ値を求める入力データを追加し、 対象データを更新します。 update(byte)メソッドは何度でも呼び出すことができます。 対象のデータが全て追加された時点で、digest()メソッドを呼び出すことにより、ハッシュ値を取得します。

reset()メソッドを呼び出すことにより、対象データはリセットされ、 MessageDigestオブジェクトは初期状態に戻ります。 digest()メソッドを呼び出した後も、 resetメソッドが呼び出された後と同じ初期状態に戻ります。

ハッシュ値計算の一例を以下に示します。

 FFSAccessManager ffsMgr = FFSAccessManager.getInstance();
 List<FFSFile> fileList = ffsMgr.getFileList();
 InputStream fis = ffsMgr.openInputStream(fileList.get(0));

 try {
     byte[] data = new byte[256];
     MessageDigest md = MessageDigest.getInstance(MessageDigest.HASH_ALGORITHM_TYPE_MD5);
     int len = 0;
     while((len = fis.read(data)) >= 0) {
         // 入力データを追加して、対象データを更新します。
         md.update(data, 0, len);
     }
     // ハッシュ値の計算を終了して、ハッシュ値を取得します。
     byte[] hash = md.digest();
 } catch(IOException e) {
 } finally {
     try {
         fis.close();
     } catch(IOException e) {
     }
 }
 

MD5(RFC 1321)のみハッシュアルゴリズムをサポートしています。


フィールドの概要
static java.lang.String HASH_ALGORITHM_TYPE_MD5
          ハッシュアルゴリズム種別の一つで、MD5(RFC 1321)を表します。
 
メソッドの概要
abstract  byte[] digest()
          パディングなどの最終処理を行い、ハッシュ値を取得します。
abstract  byte[] digest(byte[] buf)
          指定されたバイト配列を入力値として対象データを更新した後、 ハッシュ値を取得します。
abstract  int digest(byte[] buf, int off)
          パディングなどの最終処理を行い、ハッシュ値を取得します。
 java.lang.String getAlgorithm()
          ハッシュアルゴリズム名を取得します。
 int getDigestLength()
          ハッシュ値の長さ(固定長)を取得します。
static MessageDigest getInstance(java.lang.String algorithm)
          指定されたアルゴリズムのMessageDigestオブジェクトを生成します。
static boolean isEqual(byte[] src, byte[] dst)
          2 つのハッシュ値が等しいかどうかを比較します。
abstract  void reset()
          対象データをリセットします。
abstract  void update(byte input)
          指定されたバイトデータを入力値として対象データを更新します。
abstract  void update(byte[] buf)
          指定されたバイト配列を入力値として対象データを更新します。
abstract  void update(byte[] buf, int off, int len)
          指定されたバイト配列の一部を入力値として対象データを更新します。
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait
 

フィールドの詳細

HASH_ALGORITHM_TYPE_MD5

public static final java.lang.String HASH_ALGORITHM_TYPE_MD5
ハッシュアルゴリズム種別の一つで、MD5(RFC 1321)を表します。

関連項目:
getInstance(String), 定数フィールド値
メソッドの詳細

getInstance

public static MessageDigest getInstance(java.lang.String algorithm)
指定されたアルゴリズムのMessageDigestオブジェクトを生成します。

パラメータ:
algorithm - ハッシュアルゴリズムを指定します。
戻り値:
指定されたアルゴリズムのMessageDigestオブジェクトを返します。
例外:
java.lang.NullPointerException - 引数 algorithm が null の場合に発生します。
java.lang.IllegalArgumentException - サポートされないアルゴリズムを指定した場合に発生します。
関連項目:
HASH_ALGORITHM_TYPE_MD5

update

public abstract void update(byte input)
指定されたバイトデータを入力値として対象データを更新します。

パラメータ:
input - 入力バイトデータを指定します。

update

public abstract void update(byte[] buf,
                            int off,
                            int len)
指定されたバイト配列の一部を入力値として対象データを更新します。

パラメータ:
buf - 入力バイト配列を指定します。
off - バイト配列における開始位置を指定します。
len - バイト配列における長さを指定します。
例外:
java.lang.NullPointerException - 引数 buf が null の場合に発生します。
java.lang.ArrayIndexOutOfBoundsException - 引数 off が 0 未満の場合、 引数 len が 0 未満の場合、 off+len が配列 buf の長さを超える場合に発生します。

update

public abstract void update(byte[] buf)
指定されたバイト配列を入力値として対象データを更新します。

パラメータ:
buf - 入力バイト配列を指定します。
例外:
java.lang.NullPointerException - 引数 buf が null の場合に発生します。

digest

public abstract byte[] digest()
パディングなどの最終処理を行い、ハッシュ値を取得します。 この呼び出しの後、対象データはリセットされます。

戻り値:
ハッシュ値をバイト配列として返します。

digest

public abstract int digest(byte[] buf,
                           int off)
パディングなどの最終処理を行い、ハッシュ値を取得します。 引数buf のうち、引数 offを開始点としてハッシュ値の長さ-1までの配列要素にハッシュ値が格納されます。ハッシュ値格納部分以外の配列要素は変更されません。 この呼び出しの後、対象データはリセットされます。

パラメータ:
buf - ハッシュ値を出力するバイト配列を指定します。
off - バイト配列における開始位置を指定します。
戻り値:
bufに格納されたバイト数を返します。
例外:
java.lang.NullPointerException - 引数 buf が null の場合に発生します。
java.lang.ArrayIndexOutOfBoundsException - 引数 off が 0 未満の場合、 off + getDigestLength() が配列 buf の長さを超える場合に発生します。

digest

public abstract byte[] digest(byte[] buf)
指定されたバイト配列を入力値として対象データを更新した後、 ハッシュ値を取得します。 この呼び出しの後、対象データはリセットされます。

update(byte[])実行後に digest()を実行することと同じです。

パラメータ:
buf - 入力バイト配列を指定します。
戻り値:
ハッシュ値をバイト配列として返します。
例外:
java.lang.NullPointerException - 引数 buf が null の場合に発生します。

reset

public abstract void reset()
対象データをリセットします。


getDigestLength

public final int getDigestLength()
ハッシュ値の長さ(固定長)を取得します。

ハッシュ値の長さ(固定長)はアルゴリズムに依存します。

戻り値:
ハッシュ値の長さ(固定長)をバイト数で返します。

getAlgorithm

public final java.lang.String getAlgorithm()
ハッシュアルゴリズム名を取得します。

戻り値:
ハッシュアルゴリズム名を返します。

isEqual

public static boolean isEqual(byte[] src,
                              byte[] dst)
2 つのハッシュ値が等しいかどうかを比較します。

パラメータ:
src - 比較する一方のハッシュ値を指定します。
dst - 比較するもう一方のハッシュ値を指定します。
戻り値:
ハッシュ値が等しい場合にはtrueを返します。 そうでない場合にはfalseを返します。
例外:
java.lang.NullPointerException - 引数 src、dst のいずれかまたは両方が null の場合に発生します。

Copyright © 2013 NTT DOCOMO, INC. and Hitachi Kokusai Electric Inc. All Rights Reserved.