モジュール 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オブジェクトを生成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    final Object
    プロバイダの実装が複製可能な場合は複製を返します。
    final byte[]
    MAC操作を終了します。
    final byte[]
    doFinal(byte[] input)
    指定されたバイトの配列を処理してMAC操作を終了します。
    final void
    doFinal(byte[] output, int outOffset)
    MAC操作を終了します。
    final String
    このMacオブジェクトのアルゴリズム名を返します。
    static final Mac
    getInstance(String algorithm)
    指定されたMACアルゴリズムを実装するMacオブジェクトを返します。
    static final Mac
    getInstance(String algorithm, String provider)
    指定されたMACアルゴリズムを実装するMacオブジェクトを返します。
    static final Mac
    getInstance(String algorithm, Provider provider)
    指定されたMACアルゴリズムを実装するMacオブジェクトを返します。
    final int
    MACの長さをバイト単位で返します。
    final Provider
    このMacオブジェクトのプロバイダを返します。
    final void
    init(Key key)
    指定されたキーを使用してこのMacオブジェクトを初期化します。
    final void
    指定されたキーとアルゴリズム・パラメータを使用してこのMacオブジェクトを初期化します。
    final void
    このMacオブジェクトをリセットします。
    final void
    update(byte input)
    指定されたバイトを処理します。
    final void
    update(byte[] input)
    指定されたバイトの配列を処理します。
    final void
    update(byte[] input, int offset, int len)
    input内のlenバイトを処理します。offsetから始めます。
    final void
    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である場合
      関連項目:
    • 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である場合
      関連項目:
    • 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である場合
      関連項目:
    • 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

      指定されたキーとアルゴリズム・パラメータを使用してこの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をサポートしていない委譲先で呼び出された場合。
      関連項目: