public class Mac extends Object implements Cloneable
MACは、信頼できない媒体に送信または格納された情報の整合性を、秘密キーに基づいてチェックする方法を提供します。 一般に、メッセージ認証コードは、秘密キーを共有する2つのパーティ間で送信される情報の有効性を検証する場合に使用されます。
暗号化ハッシュ機能に基づくMACメカニズムは、HMACと呼ばれます。 HMACは、秘密共有キーと組み合せて、SHA256やSHA384などの任意の暗号化ハッシュ機能で使用できます。 HMACについては、RFC 2104で規定されています。
Javaプラットフォームの実装は、すべて次の標準のMac
アルゴリズムをサポートする必要があります。
HmacMD5
HmacSHA1
HmacSHA256
修飾子 | コンストラクタ | 説明 |
---|---|---|
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実装をサポートするプロバイダが存在しない場合。Provider
public 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または空の場合Provider
public 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の場合Provider
public 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
、クラスObject
CloneNotSupportedException
- Cloneable
をサポートしていない委譲先で呼び出された場合。Cloneable
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。