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

クラスMac

  • すべての実装されたインタフェース:
    Cloneable

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

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

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

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

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

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected Mac​(MacSpi macSpi, Provider provider, String algorithm)
      MACオブジェクトを生成します。
    • メソッドのサマリー

      すべてのメソッド 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)
      ByteBuffer input内のinput.position()から始まるinput.remaining()バイトを処理します。
    • コンストラクタの詳細

      • 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の初期化に不適切な場合。
      • 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