JavaTM Platform
Standard Ed. 6

javax.crypto
クラス Mac

java.lang.Object
  上位を拡張 javax.crypto.Mac
すべての実装されたインタフェース:
Cloneable

public class Mac
extends Object
implements Cloneable

このクラスは、「メッセージ認証コード」(MAC) アルゴリズムの機能を提供します。

MAC は、信頼できない媒体に送信または格納された情報の整合性を、秘密鍵に基づいてチェックする方法を提供します。一般に、メッセージ認証コードは、秘密鍵を共有する 2 つのパーティー間で送信される情報の有効性を検証する場合に使用されます。

暗号化ハッシュ機能に基づくMAC 機構は、HMAC と呼ばれます。HMAC は、秘密共有鍵と組み合わせて、MD5 や SHA-1 などの任意の暗号化ハッシュ機能で使用できます。HMAC については、RFC 2104 で規定されています。

導入されたバージョン:
1.4

コンストラクタの概要
protected Mac(MacSpi macSpi, Provider provider, String algorithm)
          MAC オブジェクトを生成します。
 
メソッドの概要
 Object clone()
          プロバイダの実装が複製可能な場合は複製を返します。
 byte[] doFinal()
          MAC 操作を終了します。
 byte[] doFinal(byte[] input)
          指定されたバイトの配列を処理して MAC 操作を終了します。
 void doFinal(byte[] output, int outOffset)
          MAC 操作を終了します。
 String getAlgorithm()
          この Mac オブジェクトのアルゴリズム名を返します。
static Mac getInstance(String algorithm)
          指定したアルゴリズムを実装する Mac オブジェクトを返します。
static Mac getInstance(String algorithm, Provider provider)
          指定したアルゴリズムを実装する Mac オブジェクトを返します。
static Mac getInstance(String algorithm, String provider)
          指定したアルゴリズムを実装する Mac オブジェクトを返します。
 int getMacLength()
          MAC の長さをバイト単位で返します。
 Provider getProvider()
          この Mac オブジェクトのプロバイダを返します。
 void init(Key key)
          指定された鍵を使用してこの Mac オブジェクトを初期化します。
 void init(Key key, AlgorithmParameterSpec params)
          指定された鍵とアルゴリズムパラメータを使用してこの Mac オブジェクトを初期化します。
 void reset()
          この Mac オブジェクトをリセットします。
 void update(byte input)
          指定されたバイトを処理します。
 void update(byte[] input)
          指定されたバイトの配列を処理します。
 void update(byte[] input, int offset, int len)
          input 内の len バイトを処理します。
 void update(ByteBuffer input)
          ByteBuffer input 内の input.position() から始まる input.remaining() バイトを処理します。
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Mac

protected Mac(MacSpi macSpi,
              Provider provider,
              String algorithm)
MAC オブジェクトを生成します。

パラメータ:
macSpi - 委譲先
provider - プロバイダ
algorithm - アルゴリズム
メソッドの詳細

getAlgorithm

public final String getAlgorithm()
この Mac オブジェクトのアルゴリズム名を返します。

これは、この Mac オブジェクトを生成した getInstance 呼び出しの 1 つで指定された名前と同じです。

戻り値:
この Mac オブジェクトのアルゴリズム名

getInstance

public static final Mac getInstance(String algorithm)
                             throws NoSuchAlgorithmException
指定したアルゴリズムを実装する Mac オブジェクトを返します。

このメソッドは、最優先のプロバイダから順に、登録済みのセキュリティープロバイダのリストをトラバースします。指定されたアルゴリズムをサポートする最初のプロバイダからの MacSpi の実装をカプセル化する新しい Mac オブジェクトが返されます。

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。

パラメータ:
algorithm - 要求された MAC アルゴリズムの標準名 標準のアルゴリズム名については、「Java 暗号化アーキテクチャーリファレンスガイド」の付録 A を参照
戻り値:
新しい Mac オブジェクト
例外:
NoSuchAlgorithmException - 指定したアルゴリズムの MacSpi 実装をサポートするプロバイダが存在しない場合
関連項目:
Provider

getInstance

public static final Mac getInstance(String algorithm,
                                    String provider)
                             throws NoSuchAlgorithmException,
                                    NoSuchProviderException
指定したアルゴリズムを実装する Mac オブジェクトを返します。

指定されたプロバイダからの MacSpi 実装をカプセル化する新しい Mac オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。

パラメータ:
algorithm - 要求された MAC アルゴリズムの標準名 標準のアルゴリズム名については、「Java 暗号化アーキテクチャーリファレンスガイド」の付録 A を参照
provider - プロバイダ名
戻り値:
新しい Mac オブジェクト
例外:
NoSuchAlgorithmException - 指定されたプロバイダに指定されたアルゴリズムの MacSpi の実装がない場合
NoSuchProviderException - 指定したプロバイダがセキュリティープロバイダリストに登録されていない場合
IllegalArgumentException - provider が null または空の場合
関連項目:
Provider

getInstance

public static final Mac getInstance(String algorithm,
                                    Provider provider)
                             throws NoSuchAlgorithmException
指定したアルゴリズムを実装する Mac オブジェクトを返します。

指定された Provider オブジェクトからの MacSpi 実装をカプセル化する新しい Mac オブジェクトが返されます。指定した Provider オブジェクトは、プロバイダリストに登録する必要はありません。

パラメータ:
algorithm - 要求された MAC アルゴリズムの標準名 標準のアルゴリズム名については、「Java 暗号化アーキテクチャーリファレンスガイド」の付録 A を参照
provider - プロバイダ
戻り値:
新しい Mac オブジェクト
例外:
NoSuchAlgorithmException - 指定された Provider オブジェクトに指定されたアルゴリズムの MacSpi の実装がない場合
IllegalArgumentException - provider が null の場合
関連項目:
Provider

getProvider

public final Provider getProvider()
この Mac オブジェクトのプロバイダを返します。

戻り値:
この Mac オブジェクトのプロバイダ

getMacLength

public final int getMacLength()
MAC の長さをバイト単位で返します。

戻り値:
バイト単位の MAC 長

init

public final void init(Key key)
                throws InvalidKeyException
指定された鍵を使用してこの Mac オブジェクトを初期化します。

パラメータ:
key - 鍵
例外:
InvalidKeyException - 指定された鍵がこの MAC の初期化に不適切な場合

init

public final void init(Key key,
                       AlgorithmParameterSpec params)
                throws InvalidKeyException,
                       InvalidAlgorithmParameterException
指定された鍵とアルゴリズムパラメータを使用してこの Mac オブジェクトを初期化します。

パラメータ:
key - 鍵
params - アルゴリズムパラメータ
例外:
InvalidKeyException - 指定された鍵がこの MAC の初期化に不適切な場合
InvalidAlgorithmParameterException - 指定されたアルゴリズムパラメータがこの MAC に不適切な場合

update

public final void update(byte input)
                  throws IllegalStateException
指定されたバイトを処理します。

パラメータ:
input - 処理される入力バイト
例外:
IllegalStateException - この Mac が初期化されていない場合

update

public final void update(byte[] input)
                  throws IllegalStateException
指定されたバイトの配列を処理します。

パラメータ:
input - 処理されるバイトの配列
例外:
IllegalStateException - この Mac が初期化されていない場合

update

public final void update(byte[] input,
                         int offset,
                         int len)
                  throws IllegalStateException
input 内の len バイトを処理します。offset から始めます。

パラメータ:
input - 入力バッファー
offset - 入力を開始する input 内のオフセット
len - 処理するバイト数
例外:
IllegalStateException - この Mac が初期化されていない場合

update

public final void update(ByteBuffer input)
ByteBuffer input 内の input.position() から始まる input.remaining() バイトを処理します。終了時に、バッファーの位置はリミットに等しくなりますが、リミットは変更されません。

パラメータ:
input - ByteBuffer
例外:
IllegalStateException - この Mac が初期化されていない場合
導入されたバージョン:
1.5

doFinal

public final byte[] doFinal()
                     throws IllegalStateException
MAC 操作を終了します。

このメソッドを呼び出すと、Mac オブジェクトは、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じて update および doFinal の新規の呼び出しを介してリセットされ、同じ鍵から別の MAC を生成するために使用可能になります。別の鍵でこの Mac オブジェクトを再使用するためには、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して再度初期化する必要があります。

戻り値:
MAC 結果
例外:
IllegalStateException - この Mac が初期化されていない場合

doFinal

public final void doFinal(byte[] output,
                          int outOffset)
                   throws ShortBufferException,
                          IllegalStateException
MAC 操作を終了します。

このメソッドを呼び出すと、Mac オブジェクトは、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じて update および doFinal の新規の呼び出しを介してリセットされ、同じ鍵から別の MAC を生成するために使用可能になります。別の鍵でこの Mac オブジェクトを再使用するためには、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して再度初期化する必要があります。

MAC 結果は output に格納されます。outOffset から始まります。

パラメータ:
output - MAC 結果が格納されるバッファー
outOffset - MAC が格納される output 内のオフセット
例外:
ShortBufferException - 指定された出力バッファーが小さすぎて結果を保持できない場合
IllegalStateException - この Mac が初期化されていない場合

doFinal

public final byte[] doFinal(byte[] input)
                     throws IllegalStateException
指定されたバイトの配列を処理して MAC 操作を終了します。

このメソッドを呼び出すと、Mac オブジェクトは、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じて update および doFinal の新規の呼び出しを介してリセットされ、同じ鍵から別の MAC を生成するために使用可能になります。別の鍵でこの Mac オブジェクトを再使用するためには、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して再度初期化する必要があります。

パラメータ:
input - バイト単位のデータ
戻り値:
MAC 結果
例外:
IllegalStateException - この Mac が初期化されていない場合

reset

public final void reset()
この Mac オブジェクトをリセットします。

このメソッドを呼び出すと、Mac オブジェクトは、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じて update および doFinal の新規の呼び出しを介してリセットされ、同じ鍵から別の MAC を生成するために使用可能になります。別の鍵でこの Mac オブジェクトを再使用するためには、init(Key) または init(Key, AlgorithmParameterSpec) の呼び出しを介して再度初期化する必要があります。


clone

public final Object clone()
                   throws CloneNotSupportedException
プロバイダの実装が複製可能な場合は複製を返します。

オーバーライド:
クラス Object 内の clone
戻り値:
プロバイダの実装が複製可能な場合は複製
例外:
CloneNotSupportedException - Cloneable をサポートしていない委譲先で呼び出された場合
関連項目:
Cloneable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。