public class Mac extends Object implements Cloneable
MACは、信頼できない媒体に送信または格納された情報の整合性を、秘密鍵に基づいてチェックする方法を提供します。一般に、メッセージ認証コードは、秘密鍵を共有する2つのパーティ間で送信される情報の有効性を検証する場合に使用されます。
暗号化ハッシュ機能に基づくMACメカニズムは、HMACと呼ばれます。HMACは、秘密共有鍵と組み合わせて、MD5やSHA-1などの任意の暗号化ハッシュ機能で使用できます。HMACについては、RFC 2104で規定されています。
 Javaプラットフォームの実装は、すべて次の標準のMacアルゴリズムをサポートする必要があります。
 
| 修飾子 | コンストラクタと説明 | 
|---|---|
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アルゴリズムを実装する 
Macオブジェクトを返します。 | 
static Mac | 
getInstance(String algorithm, Provider provider)
指定されたMACアルゴリズムを実装する 
Macオブジェクトを返します。 | 
static Mac | 
getInstance(String algorithm, String provider)
指定されたMACアルゴリズムを実装する 
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バイトを処理します。offsetから始めます。 | 
void | 
update(ByteBuffer input)
ByteBuffer  
input内のinput.position()から始まるinput.remaining()バイトを処理します。 | 
public final String getAlgorithm()
Macオブジェクトのアルゴリズム名を返します。
 これは、このMacオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。
Macオブジェクトのアルゴリズム名。public static final Mac getInstance(String algorithm) throws NoSuchAlgorithmException
Macオブジェクトを返します。
 このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。指定されたアルゴリズムをサポートする最初のプロバイダからのMacSpiの実装をカプセル化する新しいMacオブジェクトが返されます。
 登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。
algorithm - 要求されたMACアルゴリズムの標準名。標準のアルゴリズム名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMacのセクションを参照。Macオブジェクト。NoSuchAlgorithmException - 指定したアルゴリズムのMacSpi実装をサポートするプロバイダが存在しない場合。Providerpublic static final Mac getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Macオブジェクトを返します。
 指定されたプロバイダからのMacSpi実装をカプセル化する新しいMacオブジェクトが返されます。指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
 登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。
algorithm - 要求されたMACアルゴリズムの標準名。標準のアルゴリズム名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMacのセクションを参照。provider - プロバイダ名Macオブジェクト。NoSuchAlgorithmException - 指定されたプロバイダに指定されたアルゴリズムのMacSpiの実装がない場合。NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合IllegalArgumentException - providerがnullまたは空の場合Providerpublic static final Mac getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Macオブジェクトを返します。
 指定されたProviderオブジェクトからのMacSpi実装をカプセル化する新しいMacオブジェクトが返されます。指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
algorithm - 要求されたMACアルゴリズムの標準名。標準のアルゴリズム名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのMacのセクションを参照。provider - プロバイダMacオブジェクト。NoSuchAlgorithmException - 指定されたProviderオブジェクトに指定されたアルゴリズムのMacSpiの実装がない場合。IllegalArgumentException - providerがnullの場合Providerpublic final Provider getProvider()
Macオブジェクトのプロバイダを返します。Macオブジェクトのプロバイダ。public final int getMacLength()
public final void init(Key key) throws InvalidKeyException
Macオブジェクトを初期化します。key - 鍵InvalidKeyException - 指定された鍵がこのMACの初期化に不適切な場合。public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Macオブジェクトを初期化します。key - 鍵params - アルゴリズム・パラメータ。InvalidKeyException - 指定された鍵がこのMACの初期化に不適切な場合。InvalidAlgorithmParameterException - 指定されたアルゴリズム・パラメータがこのMACに不適切な場合。public final void update(byte input)
                  throws IllegalStateException
input - 処理される入力バイト。IllegalStateException - このMacが初期化されていない場合。public final void update(byte[] input)
                  throws IllegalStateException
input - 処理されるバイトの配列。IllegalStateException - このMacが初期化されていない場合。public final void update(byte[] input,
                         int offset,
                         int len)
                  throws IllegalStateException
input内のlenバイトを処理します。offsetから始めます。input - 入力バッファoffset - 入力を開始するinput内のオフセット。len - 処理するバイト数。IllegalStateException - このMacが初期化されていない場合。public final void update(ByteBuffer input)
input内のinput.position()から始まるinput.remaining()バイトを処理します。終了時に、バッファの位置はリミットに等しくなりますが、リミットは変更されません。input - ByteBufferIllegalStateException - このMacが初期化されていない場合。public final byte[] doFinal()
                     throws IllegalStateException
このメソッドを呼び出すと、このMacオブジェクトは、init(Key)またはinit(Key, AlgorithmParameterSpec)の呼出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じてupdateおよびdoFinalの新規の呼出しを介してリセットされ、同じ鍵から別のMACを生成するために使用可能になります。別の鍵でこのMacオブジェクトを再使用するためには、init(Key)またはinit(Key, AlgorithmParameterSpec)の呼出しを介して再度初期化する必要があります。
IllegalStateException - このMacが初期化されていない場合。public final void doFinal(byte[] output,
                          int outOffset)
                   throws ShortBufferException,
                          IllegalStateException
このメソッドを呼び出すと、この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が初期化されていない場合。public final byte[] doFinal(byte[] input)
                     throws IllegalStateException
このメソッドを呼び出すと、このMacオブジェクトは、init(Key)またはinit(Key, AlgorithmParameterSpec)の呼出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じてupdateおよびdoFinalの新規の呼出しを介してリセットされ、同じ鍵から別のMACを生成するために使用可能になります。別の鍵でこのMacオブジェクトを再使用するためには、init(Key)またはinit(Key, AlgorithmParameterSpec)の呼出しを介して再度初期化する必要があります。
input - バイト単位のデータIllegalStateException - このMacが初期化されていない場合。public final void reset()
Macオブジェクトをリセットします。
 このメソッドを呼び出すと、このMacオブジェクトは、init(Key)またはinit(Key, AlgorithmParameterSpec)の呼出しを介して以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じてupdateおよびdoFinalの新規の呼出しを介してリセットされ、同じ鍵から別のMACを生成するために使用可能になります。別の鍵でこのMacオブジェクトを再使用するためには、init(Key)またはinit(Key, AlgorithmParameterSpec)の呼出しを介して再度初期化する必要があります。
public final Object clone() throws CloneNotSupportedException
clone、クラス: ObjectCloneNotSupportedException - Cloneableをサポートしていない委譲先で呼び出された場合。Cloneable バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
 Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.