モジュール java.base
パッケージ javax.crypto

クラスMac

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

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

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

暗号化ハッシュ機能に基づくMACメカニズムは、HMACと呼ばれます。 HMACは、任意の暗号ハッシュ関数(例えば、SHA256またはSHA384)と共に、秘密の共有鍵と組み合わせて使用することができます。 HMACについては、RFC 2104で規定されています。

Javaプラットフォームの実装は、すべて次の標準のMacアルゴリズムをサポートする必要があります。

  • HmacSHA1
  • HmacSHA256
これらのアルゴリズムは、Javaセキュリティ標準アルゴリズム名仕様の「Macセクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

導入されたバージョン:
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アルゴリズムを実装する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)
    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呼出しのいずれかに指定された名前と同じです。

      戻り値:
      この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 - algorithmnullである場合
      関連項目:
      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 - providernullまたは空の場合
      NoSuchAlgorithmException - 指定されたアルゴリズムのMacSpi実装が、指定されたプロバイダから利用可能でない場合
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
      NullPointerException - algorithmnullである場合
      関連項目:
      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 - providernullの場合
      NoSuchAlgorithmException - 指定されたアルゴリズムのMacSpi実装が、指定されたProviderオブジェクトから使用できない場合
      NullPointerException - algorithmnullである場合
      関連項目:
      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
      プロバイダの実装が複製可能な場合は複製を返します。
      オーバーライド:
      clone、クラス: Object
      戻り値:
      プロバイダの実装が複製可能な場合は複製
      例外:
      CloneNotSupportedException - Cloneableをサポートしていない委譲先で呼び出された場合。
      関連項目:
      Cloneable