HMAC プログラム
機能概要
Java言語で記述されたハッシュ関数を用いたメッセージ認証子 (HMAC) の生成プログラムです.
ハッシュ関数を用いたメッセージ認証子の生成方法として HMAC があり,以下の式で計算されます.
MAC(text)t = HMAC(K, text)t = H((K0 xor opad )|| H((K0 xor ipad) || text))t
H |
: |
ハッシュ関数 |
ipad |
: |
入力パディング (x'36' の B 回繰返し (B はハッシュ関数の入力ブロック長)) |
K |
: |
送信者と受信者間の秘密の共有鍵(秘密鍵) |
K0 |
: |
B バイトにするために必要な変換 (0x00 を追加) をした後の鍵 K |
opad |
: |
出力パディング (X'5C’の B 回繰返し) |
t |
: |
MAC のバイト数 |
text |
: |
対象データ |
クラス
- HMac クラス (HMac.java)
HMAC を生成するクラス (Blanclux.crypto.mac.HMac) であり,以下のメソッドを持つ.
- HMac()
コンストラクタである.
- void init (Key key, AlgorithmParameterSpec params)
HMAC クラスを秘密鍵 key とハッシュアルゴリズム paramsr で初期化する.
- byte[] doFinal()
設定されているデータをもとに,MAC の計算を行う.
- void reset()
MAC をリセットする.秘密鍵 key は保持される.
- int getMacLength()
MAC のバイト長を返す.
- void update(byte input)
入力データとしてバイトデータ input を与える.
- void update(byte[] input, int offset, int len)
入力データとしてバイト配列データ input の offset バイト位置からの len バイトを与える.
(注) 暗号プロバイダクラスとする場合は,MacSpi クラスを継承するようにする. また,各メソッドの名称は,engine メソッドとする (メソッド名の前に engine を付け,先頭を大文字 (engineInit など) にする).
- HMacKey クラス (HMacKey.java)
HMAC の秘密鍵を保持する SecretKey インタフェースのクラス (Blanclux.crypto.key.HMacKey) であり,以下のメソッドを持つ.
- HMacKey(byte[] key)
コンストラクタである.HMAC の秘密鍵 key を与える.
- String getAlgorithm()
アルゴリズム名 ("HMacKey") を返す.
- String getFormat()
秘密鍵のエンコード形式 ("RAW") を返す(エンコード無).
- byte[] getEncoded()
HMAC の秘密鍵を返す.
- HMacParameterSpec クラス (HMacParameterSpec.java)
HMAC のパラメータを保持する AlgorithmParameterSpec インタフェースのクラス (Blanclux.crypto.spec.HMacParameterSpec) であり,以下のメソッドを持つ.
- HMacParameterSpec(String algorithm)
コンストラクタである.HMAC のハッシュアルゴリズム名 algorithm ("MD5", "SHA" など) を与える.
- String getAlgorithm()
ハッシュアルゴリズム名を返す.