- 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で規定されています。
Javaプラットフォームの実装は、すべて次の標準の
Mac
アルゴリズムをサポートする必要があります。HmacMD5
HmacSHA1
HmacSHA256
- 導入されたバージョン:
- 1.4
-
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 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, String provider)
指定されたMACアルゴリズムを実装するMac
オブジェクトを返します。static Mac
getInstance(String algorithm, Provider 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)
ByteBufferinput
内のinput.position()
から始まるinput.remaining()
バイトを処理します。
-
-
-
メソッドの詳細
-
getAlgorithm
public final String getAlgorithm()
このMac
オブジェクトのアルゴリズム名を返します。これは、この
Mac
オブジェクトを作成したgetInstance
呼出しのいずれかに指定された名前と同じです。- 戻り値:
- この
Mac
オブジェクトのアルゴリズム名。
-
getInstance
public static final Mac getInstance(String algorithm) throws NoSuchAlgorithmException
指定されたMACアルゴリズムを実装するMac
オブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダからのMacSpiの実装をカプセル化する新しいMacオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- 実装上の注意:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm
- 要求されたMACアルゴリズムの標準名。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMacのセクションを参照してください。- 戻り値:
- 新しい
Mac
オブジェクト - 例外:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのMacSpi
実装をサポートしていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
Provider
-
getInstance
public static final Mac getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
指定されたMACアルゴリズムを実装するMac
オブジェクトを返します。指定されたプロバイダからのMacSpi実装をカプセル化する新しいMacオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- パラメータ:
algorithm
- 要求されたMACアルゴリズムの標準名。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMacのセクションを参照してください。provider
- プロバイダ名- 戻り値:
- 新しい
Mac
オブジェクト - 例外:
IllegalArgumentException
-provider
がnull
または空の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのMacSpi
実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
Provider
-
getInstance
public static final Mac getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
指定されたMACアルゴリズムを実装するMac
オブジェクトを返します。指定されたProviderオブジェクトからのMacSpi実装をカプセル化する新しいMacオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
algorithm
- 要求されたMACアルゴリズムの標準名。 標準的なアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のMacのセクションを参照してください。provider
- プロバイダ- 戻り値:
- 新しい
Mac
オブジェクト - 例外:
IllegalArgumentException
-provider
がnull
の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのMacSpi
実装が、指定されたProvider
オブジェクトから使用できない場合NullPointerException
-algorithm
が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)
ByteBufferinput
内の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
プロバイダの実装が複製可能な場合は複製を返します。- オーバーライド:
clone
、クラス:Object
- 戻り値:
- プロバイダの実装が複製可能な場合は複製
- 例外:
CloneNotSupportedException
-Cloneable
をサポートしていない委譲先で呼び出された場合。- 関連項目:
Cloneable
-
-