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

クラスCipher

  • 直系の既知のサブクラス:
    NullCipher

    public class Cipher
    extends Object
    このクラスは、暗号化および復号化の暗号機能を提供します。 これは、JCE (Java Cryptographic Extension)フレームワークのコア部分を構成します。

    Cipherオブジェクトを生成するには、アプリケーションはCipherのgetInstanceメソッドを呼び出して、要求された変換の名前を渡します。 必要に応じて、プロバイダの名前を指定できます。

    変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。 変換には、常に暗号アルゴリズム(e.g., AES)の名前が含まれ、フィードバック・モードとパディング・スキームが続きます。

    変換は、次の書式で記述されます。

    • "algorithm/mode/padding"または
    • "algorithm"

    後者の場合、モードおよびパディング方式には、プロバイダ固有のデフォルト値が使用されます。 たとえば、次は有効な変換です。

         Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
     
    CFBOFBなどのモードを使用すると、ブロック暗号は、暗号の実際のブロック・サイズよりも小さい単位でデータを暗号化できます。 このようなモードを要求する場合、AES/CFB8/NoPaddingおよびAES/OFB32/PKCS5Padding変換で示されるように、一度に処理するビット数を、モード名に追加することで指定することもできます。 数値を指定しない場合、プロバイダ固有のデフォルトが使用されます。 (JDKプロバイダのデフォルト値については、「JDKプロバイダのドキュメント」を参照してください。) したがって、CFB8やOFB8などの8ビット・モードを使用することで、ブロック暗号をバイト指向のストリーム暗号に変換できます。

    関連データ付き認証付暗号化方式(AEAD)などのモードは、機密データと暗号化されていないAdditional Associated Data (AAD)の両方に信頼性の証明を提供します。 (AEADやGCM/CCMなどのAADアルゴリズムの詳細については、RFC 5116を参照してください。) 機密データとAADデータは、どちらも認証タグを計算するときに使用できます(Macに似ています)。 このタグは暗号化の際に暗号テキストに追加され、復号化の際に検証されます。

    GCMやCCMなどのAEADモードは、暗号テキストの信頼性計算を開始する前にAADの信頼性計算をすべて実行します。 実装の際に暗号テキストを内部にバッファしなくてすむようにするには、暗号テキストの処理(updateおよびdoFinalメソッドを使用) よりも前にGCMまたはCCMの実装にすべてのAADデータを供給(updateAADメソッドを使用)する必要があります。

    GCMモードでは、ある特定の鍵による暗号化に使用されるIVは一意でなければならないという要件があります。 GCM暗号化にIVを繰り返し使用すると、偽造攻撃の対象になります。 したがって、GCMモードを使用して暗号化処理を行ったたびに、呼出し元は異なるIV値を持つGCMパラメータで暗号オブジェクトを再初期化するようにしてください。

         GCMParameterSpec s = ...;
         cipher.init(..., s);
    
         // If the GCM parameters were generated by the provider, it can
         // be retrieved by:
         // cipher.getParameters().getParameterSpec(GCMParameterSpec.class);
    
         cipher.updateAAD(...);  // AAD
         cipher.update(...);     // Multi-part update
         cipher.doFinal(...);    // conclusion of operation
    
         // Use a different IV value for every encryption
         byte[] newIv = ...;
         s = new GCMParameterSpec(s.getTLen(), newIv);
         cipher.init(..., s);
         ...
    
     
    Javaプラットフォームの実装は、すべて次の標準のCipher変換とカッコ内の鍵サイズをサポートする必要があります。
    • AES/CBC/NoPadding (128)
    • AES/CBC/PKCS5Padding (128)
    • AES/ECB/NoPadding (128)
    • AES/ECB/PKCS5Padding (128)
    • AES/GCM/NoPadding (128)
    • DES/CBC/NoPadding (56)
    • DES/CBC/PKCS5Padding (56)
    • DES/ECB/NoPadding (56)
    • DES/ECB/PKCS5Padding (56)
    • DESede/CBC/NoPadding (168)
    • DESede/CBC/PKCS5Padding (168)
    • DESede/ECB/NoPadding (168)
    • DESede/ECB/PKCS5Padding (168)
    • RSA/ECB/PKCS1Padding (1024、2048)
    • RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024、2048)
    • RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024、2048)
    これらの変換は、Javaセキュリティ標準アルゴリズム名仕様の「暗号セクション」に記述されています。 サポートされているその他の変換については、実装のリリース・ドキュメントを参照してください。
    導入されたバージョン:
    1.4
    関連項目:
    KeyGenerator, SecretKey
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static int DECRYPT_MODE
      暗号を復号化モードに初期化するのに使用する定数です。
      static int ENCRYPT_MODE
      暗号を暗号化モードに初期化するのに使用する定数です。
      static int PRIVATE_KEY
      ラップ解除される鍵が「非公開鍵」であることを示すのに使用する定数です。
      static int PUBLIC_KEY
      ラップ解除される鍵が「公開鍵」であることを示すのに使用する定数です。
      static int SECRET_KEY
      ラップ解除される鍵が「秘密鍵」であることを示すのに使用する定数です。
      static int UNWRAP_MODE
      暗号を鍵ラッピング解除モードに初期化するのに使用する定数です。
      static int WRAP_MODE
      暗号を鍵ラッピング・モードに初期化するのに使用する定数です。
    • コンストラクタのサマリー

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

      すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      byte[] doFinal()
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。
      byte[] doFinal​(byte[] input)
      単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
      int doFinal​(byte[] output, int outputOffset)
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。
      byte[] doFinal​(byte[] input, int inputOffset, int inputLen)
      単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
      int doFinal​(byte[] input, int inputOffset, int inputLen, byte[] output)
      単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
      int doFinal​(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
      単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
      int doFinal​(ByteBuffer input, ByteBuffer output)
      単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
      String getAlgorithm()
      このCipherオブジェクトのアルゴリズム名を返します。
      int getBlockSize()
      ブロック・サイズを返します(バイト単位)。
      ExemptionMechanism getExemptionMechanism()
      この暗号で使用される除外メカニズム・オブジェクトを返します。
      static Cipher getInstance​(String transformation)
      指定された変換を実装するCipherオブジェクトを返します。
      static Cipher getInstance​(String transformation, String provider)
      指定された変換を実装するCipherオブジェクトを返します。
      static Cipher getInstance​(String transformation, Provider provider)
      指定された変換を実装するCipherオブジェクトを返します。
      byte[] getIV()
      新しいバッファの初期化ベクトル(IV)を返します。
      static int getMaxAllowedKeyLength​(String transformation)
      インストールされているJCE管轄ポリシー・ファイルに従って、指定された変換の鍵の最大長を返します。
      static AlgorithmParameterSpec getMaxAllowedParameterSpec​(String transformation)
      管轄ポリシー・ファイルに従って、最大の暗号パラメータ値を含むAlgorithmParameterSpecオブジェクトを返します。
      int getOutputSize​(int inputLen)
      入力の長さinputLen (バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。
      AlgorithmParameters getParameters()
      この暗号で使用されるパラメータを返します。
      Provider getProvider()
      このCipherオブジェクトのプロバイダを返します。
      void init​(int opmode, Certificate certificate)
      この暗号を、検証操作のために指定された公開鍵で初期化します。
      void init​(int opmode, Certificate certificate, SecureRandom random)
      この暗号を、検証操作のために指定された公開鍵および乱数発生の元を使って初期化します。
      void init​(int opmode, Key key)
      鍵を使用してこの暗号を初期化します。
      void init​(int opmode, Key key, AlgorithmParameters params)
      鍵とアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。
      void init​(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
      鍵、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
      void init​(int opmode, Key key, SecureRandom random)
      鍵と乱数発生の元を使用してこの暗号を初期化します。
      void init​(int opmode, Key key, AlgorithmParameterSpec params)
      鍵とアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。
      void init​(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
      鍵、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
      Key unwrap​(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
      前にラップされた鍵をラップ解除します。
      byte[] update​(byte[] input)
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
      byte[] update​(byte[] input, int inputOffset, int inputLen)
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
      int update​(byte[] input, int inputOffset, int inputLen, byte[] output)
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
      int update​(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
      int update​(ByteBuffer input, ByteBuffer output)
      複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
      void updateAAD​(byte[] src)
      AAD (Additional Authentication Data)のマルチパート更新を継続します。
      void updateAAD​(byte[] src, int offset, int len)
      提供されたバッファのサブセットを使用して、Additional Authentication Data (AAD)のマルチパート更新を続行します。
      void updateAAD​(ByteBuffer src)
      AAD (Additional Authentication Data)のマルチパート更新を継続します。
      byte[] wrap​(Key key)
      鍵をラップします。
    • フィールドの詳細

      • ENCRYPT_MODE

        public static final int ENCRYPT_MODE
        暗号を暗号化モードに初期化するのに使用する定数です。
        関連項目:
        定数フィールド値
      • DECRYPT_MODE

        public static final int DECRYPT_MODE
        暗号を復号化モードに初期化するのに使用する定数です。
        関連項目:
        定数フィールド値
      • WRAP_MODE

        public static final int WRAP_MODE
        暗号を鍵ラッピング・モードに初期化するのに使用する定数です。
        関連項目:
        定数フィールド値
      • UNWRAP_MODE

        public static final int UNWRAP_MODE
        暗号を鍵ラッピング解除モードに初期化するのに使用する定数です。
        関連項目:
        定数フィールド値
      • PUBLIC_KEY

        public static final int PUBLIC_KEY
        ラップ解除される鍵が「公開鍵」であることを示すのに使用する定数です。
        関連項目:
        定数フィールド値
      • PRIVATE_KEY

        public static final int PRIVATE_KEY
        ラップ解除される鍵が「非公開鍵」であることを示すのに使用する定数です。
        関連項目:
        定数フィールド値
      • SECRET_KEY

        public static final int SECRET_KEY
        ラップ解除される鍵が「秘密鍵」であることを示すのに使用する定数です。
        関連項目:
        定数フィールド値
    • コンストラクタの詳細

      • Cipher

        protected Cipher​(CipherSpi cipherSpi,
                         Provider provider,
                         String transformation)
        Cipherオブジェクトを生成します。
        パラメータ:
        cipherSpi - 委譲先
        provider - プロバイダ
        transformation - 変換
    • メソッドの詳細

      • getInstance

        public static final Cipher getInstance​(String transformation)
                                        throws NoSuchAlgorithmException,
                                               NoSuchPaddingException
        指定された変換を実装するCipherオブジェクトを返します。

        このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        実装上の注意:
        JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
        パラメータ:
        transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。
        戻り値:
        要求された変換を実装する暗号
        例外:
        NoSuchAlgorithmException - transformationnull、空の、無効な形式、またはProviderが指定されたアルゴリズムのCipherSpi実装をサポートしていない場合
        NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている場合
        関連項目:
        Provider
      • getInstance

        public static final Cipher getInstance​(String transformation,
                                               String provider)
                                        throws NoSuchAlgorithmException,
                                               NoSuchProviderException,
                                               NoSuchPaddingException
        指定された変換を実装するCipherオブジェクトを返します。

        指定されたプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        パラメータ:
        transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。
        provider - プロバイダ名
        戻り値:
        要求された変換を実装する暗号
        例外:
        IllegalArgumentException - providernullまたは空の場合
        NoSuchAlgorithmException - transformationnull、空であるか、無効な形式である場合、または指定されたアルゴリズムのCipherSpi実装が指定されたプロバイダから利用できない場合
        NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている場合
        NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
        関連項目:
        Provider
      • getInstance

        public static final Cipher getInstance​(String transformation,
                                               Provider provider)
                                        throws NoSuchAlgorithmException,
                                               NoSuchPaddingException
        指定された変換を実装するCipherオブジェクトを返します。

        指定されたProviderオブジェクトからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。

        パラメータ:
        transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。
        provider - プロバイダ
        戻り値:
        要求された変換を実装する暗号
        例外:
        IllegalArgumentException - providernullの場合
        NoSuchAlgorithmException - transformationnull、空の、無効な形式、または指定されたアルゴリズムのCipherSpi実装が指定されたProviderオブジェクトから利用できない場合
        NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている場合
        関連項目:
        Provider
      • getProvider

        public final Provider getProvider()
        このCipherオブジェクトのプロバイダを返します。
        戻り値:
        このCipherオブジェクトのプロバイダ
      • getAlgorithm

        public final String getAlgorithm()
        このCipherオブジェクトのアルゴリズム名を返します。

        これは、このCipherオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。

        戻り値:
        このCipherオブジェクトのアルゴリズム名。
      • getBlockSize

        public final int getBlockSize()
        ブロック・サイズを返します(バイト単位)。
        戻り値:
        ブロック・サイズ(バイト単位)。基本となるアルゴリズムがブロック暗号でない場合は0
      • getOutputSize

        public final int getOutputSize​(int inputLen)
        入力の長さinputLen (バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。

        この呼出しでは、以前のupdate呼出しの処理されていない(バッファにある)データを考慮し、パディングおよびAEADタグ付けを行います。

        次のupdateまたはdoFinal呼出しの実際の出力長は、このメソッドが返す長さより小さいことがあります。

        パラメータ:
        inputLen - 入力長(バイト単位)
        戻り値:
        必要な出力バッファ・サイズ(バイト単位)
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(まだ初期化されていないなど)
      • getIV

        public final byte[] getIV()
        新しいバッファの初期化ベクトル(IV)を返します。

        これは、ランダムIVが作成された場合、あるいはIVがユーザー指定のパスワードから派生するパスワードベースの暗号化または復号化のコンテキストにおいて役立ちます。

        戻り値:
        新しいバッファ内の初期化ベクトル。基本となるアルゴリズムがIVを使用しない場合、またはIVが設定されていない場合はnull
      • getParameters

        public final AlgorithmParameters getParameters()
        この暗号で使用されるパラメータを返します。

        返されるパラメータは、この暗号を初期化するのに使用したものと同じ場合があります。または、返されるパラメータには、この暗号にアルゴリズム・パラメータが必要で、かつアルゴリズム・パラメータで初期化されなかった場合に、基本となる暗号実装で使用されるデフォルトとランダムのパラメータ値の組み合わせが含まれることもあります。

        戻り値:
        この暗号で使用されるパラメータ。この暗号でパラメータを使用しない場合はnull
      • getExemptionMechanism

        public final ExemptionMechanism getExemptionMechanism()
        この暗号で使用される除外メカニズム・オブジェクトを返します。
        戻り値:
        この暗号で使用される除外メカニズム・オブジェクト。この暗号で除外メカニズムを使用しない場合はnull
      • init

        public final void init​(int opmode,
                               Key key)
                        throws InvalidKeyException
        鍵を使用してこの暗号を初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        この暗号が、指定されたkeyから派生できないアルゴリズム・パラメータを必要とする場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidKeyExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、乱数発生の元として最優先の順位でインストールされているプロバイダのSecureRandomの実装を使用して取得します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        key - 鍵
        例外:
        InvalidKeyException - 指定された鍵がこの暗号の初期化に不適切な場合、この暗号が指定された鍵から判定することができないアルゴリズム・パラメータを必要とする場合、または指定された鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Key key,
                               SecureRandom random)
                        throws InvalidKeyException
        鍵と乱数発生の元を使用してこの暗号を初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        この暗号が、指定されたkeyから派生できないアルゴリズム・パラメータを必要とする場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidKeyExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、randomから取得します。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        key - 暗号化鍵
        random - 乱数発生の元
        例外:
        InvalidKeyException - 指定された鍵がこの暗号の初期化に不適切な場合、この暗号が指定された鍵から判定することができないアルゴリズム・パラメータを必要とする場合、または指定された鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Key key,
                               AlgorithmParameterSpec params)
                        throws InvalidKeyException,
                               InvalidAlgorithmParameterException
        鍵とアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidAlgorithmParameterExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、乱数発生の元として最優先の順位でインストールされているプロバイダのSecureRandomの実装を使用して取得します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        key - 暗号化鍵
        params - アルゴリズム・パラメータ
        例外:
        InvalidKeyException - 指定された鍵がこの暗号の初期化に不適切な場合、または指定された鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        InvalidAlgorithmParameterException - 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Key key,
                               AlgorithmParameterSpec params,
                               SecureRandom random)
                        throws InvalidKeyException,
                               InvalidAlgorithmParameterException
        鍵、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidAlgorithmParameterExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、randomから取得します。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        key - 暗号化鍵
        params - アルゴリズム・パラメータ
        random - 乱数発生の元
        例外:
        InvalidKeyException - 指定された鍵がこの暗号の初期化に不適切な場合、または指定された鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        InvalidAlgorithmParameterException - 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Key key,
                               AlgorithmParameters params)
                        throws InvalidKeyException,
                               InvalidAlgorithmParameterException
        鍵とアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidAlgorithmParameterExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、乱数発生の元として最優先の順位でインストールされているプロバイダのSecureRandomの実装を使用して取得します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        key - 暗号化鍵
        params - アルゴリズム・パラメータ
        例外:
        InvalidKeyException - 指定された鍵がこの暗号の初期化に不適切な場合、または指定された鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        InvalidAlgorithmParameterException - 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Key key,
                               AlgorithmParameters params,
                               SecureRandom random)
                        throws InvalidKeyException,
                               InvalidAlgorithmParameterException
        鍵、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidAlgorithmParameterExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、randomから取得します。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        key - 暗号化鍵
        params - アルゴリズム・パラメータ
        random - 乱数発生の元
        例外:
        InvalidKeyException - 指定された鍵がこの暗号の初期化に不適切な場合、または指定された鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        InvalidAlgorithmParameterException - 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Certificate certificate)
                        throws InvalidKeyException
        この暗号を、検証操作のために指定された公開鍵で初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        証明書の種類がX.509で、重要とマークされたkey usage拡張フィールドがあり、key usage拡張フィールドの値によって証明書の公開鍵とそれに対応する非公開鍵がopmodeの値で表される操作に使用されないものである場合は、InvalidKeyExceptionがスローされます。

        この暗号が、指定されたcertificateの公開鍵から派生できないアルゴリズム・パラメータを必要とする場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidKeyExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、乱数発生の元として最優先の順位でインストールされているプロバイダのSecureRandomの実装を使用して取得します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        certificate - 証明書
        例外:
        InvalidKeyException - 指定された証明書の公開鍵がこの暗号の初期化に不適切な場合、この暗号が指定された証明書の公開鍵から判定することができないアルゴリズム・パラメータを必要とする場合、または指定された証明書の公開鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • init

        public final void init​(int opmode,
                               Certificate certificate,
                               SecureRandom random)
                        throws InvalidKeyException
        この暗号を、検証操作のために指定された公開鍵および乱数発生の元を使って初期化します。

        この暗号は、opmodeの値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。

        証明書の種類がX.509で、重要とマークされたkey usage拡張フィールドがあり、key usage拡張フィールドの値によって証明書の公開鍵とそれに対応する非公開鍵がopmodeの値で表される操作に使用されないものである場合は、InvalidKeyExceptionがスローされます。

        この暗号が、指定されたcertificateの公開鍵から派生できないアルゴリズム・パラメータを必要とする場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidKeyExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV (パラメータがIVの場合)を使用して取り出すことができます。

        この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。

        この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、randomから取得します。

        Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。

        パラメータ:
        opmode - この暗号の操作モード(ENCRYPT_MODEDECRYPT_MODEWRAP_MODE、またはUNWRAP_MODEのどれか)
        certificate - 証明書
        random - 乱数発生の元
        例外:
        InvalidKeyException - 指定された証明書の公開鍵がこの暗号の初期化に不適切な場合、この暗号が指定された証明書の公開鍵から判定することができないアルゴリズム・パラメータを必要とする場合、または指定された証明書の公開鍵のサイズが最大許容鍵サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。
        UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEの場合、そのモードは基になるCipherSpiによって実装されていません。
      • update

        public final byte[] update​(byte[] input)
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。

        inputバッファ内のバイトが処理され、結果が新しいバッファに格納されます。

        inputの長さがゼロの場合、このメソッドはnullを返します。

        パラメータ:
        input - 入力バッファ
        戻り値:
        結果の入った新しいバッファ。基本となる暗号がブロック暗号であり、入力データが短かすぎて新しいブロックにならない場合はnull
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
      • update

        public final byte[] update​(byte[] input,
                                   int inputOffset,
                                   int inputLen)
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。

        inputOffsetから始まる、inputバッファ内の最初のinputLenバイトが処理され、結果が新しいバッファに格納されます。

        inputLenがゼロの場合、このメソッドはnullを返します。

        パラメータ:
        input - 入力バッファ
        inputOffset - 入力を開始するinput内のオフセット
        inputLen - 入力長
        戻り値:
        結果の入った新しいバッファ。基本となる暗号がブロック暗号であり、入力データが短かすぎて新しいブロックにならない場合はnull
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
      • update

        public final int update​(byte[] input,
                                int inputOffset,
                                int inputLen,
                                byte[] output)
                         throws ShortBufferException
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。

        inputOffsetから始まる、inputバッファ内の最初のinputLenバイトが処理され、結果がoutputバッファに格納されます。

        outputバッファが小さすぎて結果を保持できない場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        inputLenが0の場合、このメソッドは長さゼロを返します。

        注: このメソッドはコピーに対して安全である必要があります。つまり、inputおよびoutputバッファは同じバイト配列を参照することができ、結果が出力バッファにコピーされるときに未処理の入力データが上書きされないことが必要です。

        パラメータ:
        input - 入力バッファ
        inputOffset - 入力を開始するinput内のオフセット
        inputLen - 入力長
        output - 結果を格納するバッファ
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない場合
      • update

        public final int update​(byte[] input,
                                int inputOffset,
                                int inputLen,
                                byte[] output,
                                int outputOffset)
                         throws ShortBufferException
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。

        inputOffsetから始まる、inputバッファ内の最初のinputLenバイトが処理され、結果はoutputバッファのoutputOffsetから始まる位置に格納されます。

        outputバッファが小さすぎて結果を保持できない場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        inputLenが0の場合、このメソッドは長さゼロを返します。

        注: このメソッドはコピーに対して安全である必要があります。つまり、inputおよびoutputバッファは同じバイト配列を参照することができ、結果が出力バッファにコピーされるときに未処理の入力データが上書きされないことが必要です。

        パラメータ:
        input - 入力バッファ
        inputOffset - 入力を開始するinput内のオフセット
        inputLen - 入力長
        output - 結果を格納するバッファ
        outputOffset - 結果が格納されるoutput内のオフセット
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない場合
      • update

        public final int update​(ByteBuffer input,
                                ByteBuffer output)
                         throws ShortBufferException
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。

        input.position()から始まるすべてのinput.remaining()バイトが処理されます。 結果はoutputバッファに格納されます。 終了時に、入力バッファの位置はリミットに等しくなりますが、リミットは変更されません。 出力バッファの位置はnだけ増加します。nは、このメソッドが返す値です。出力バッファのリミットは変更されません。

        output.remaining()バイトが結果を保持するのに不十分な場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        注: このメソッドはコピーに対して安全である必要があります。つまり、inputおよびoutputバッファは同じメモリー・ブロックを参照することができ、結果が出力バッファにコピーされるときに未処理の入力データが上書きされないことが必要です。

        パラメータ:
        input - 入力ByteBuffer
        output - 出力ByteBuffer
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalArgumentException - 入力と出力が同じオブジェクトである場合
        ReadOnlyBufferException - 出力バッファが読取り専用の場合
        ShortBufferException - 出力バッファ内に残っている容量が不足している場合
        導入されたバージョン:
        1.5
      • doFinal

        public final byte[] doFinal()
                             throws IllegalBlockSizeException,
                                    BadPaddingException
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。

        入力データは前のupdate操作中にバッファに入れられて、パディング(要求された場合)が適用されている場合があります。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は新しいバッファに格納されます。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        戻り値:
        結果の入った新しいバッファ
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
      • doFinal

        public final int doFinal​(byte[] output,
                                 int outputOffset)
                          throws IllegalBlockSizeException,
                                 ShortBufferException,
                                 BadPaddingException
        複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。

        入力データは前のupdate操作中にバッファに入れられて、パディング(要求された場合)が適用されている場合があります。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は、outputOffsetから始まるoutputバッファに格納されます。

        outputバッファが小さすぎて結果を保持できない場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        パラメータ:
        output - 結果を格納するバッファ
        outputOffset - 結果が格納されるoutput内のオフセット
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない場合
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
      • doFinal

        public final byte[] doFinal​(byte[] input)
                             throws IllegalBlockSizeException,
                                    BadPaddingException
        単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。 データは、この暗号が初期化された方法に従って、暗号化または復号化されます。

        inputバッファ内のバイト、および前のupdate操作中にバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は新しいバッファに格納されます。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        パラメータ:
        input - 入力バッファ
        戻り値:
        結果の入った新しいバッファ
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
      • doFinal

        public final byte[] doFinal​(byte[] input,
                                    int inputOffset,
                                    int inputLen)
                             throws IllegalBlockSizeException,
                                    BadPaddingException
        単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。 データは、この暗号が初期化された方法に従って、暗号化または復号化されます。

        inputOffsetから始まるinputバッファ内の最初のinputLenバイト、および前のupdate操作でバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は新しいバッファに格納されます。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        パラメータ:
        input - 入力バッファ
        inputOffset - 入力を開始するinput内のオフセット
        inputLen - 入力長
        戻り値:
        結果の入った新しいバッファ
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
      • doFinal

        public final int doFinal​(byte[] input,
                                 int inputOffset,
                                 int inputLen,
                                 byte[] output)
                          throws ShortBufferException,
                                 IllegalBlockSizeException,
                                 BadPaddingException
        単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。 データは、この暗号が初期化された方法に従って、暗号化または復号化されます。

        inputOffsetから始まるinputバッファ内の最初のinputLenバイト、および前のupdate操作でバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果はoutputバッファに格納されます。

        outputバッファが小さすぎて結果を保持できない場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        注: このメソッドはコピーに対して安全である必要があります。つまり、inputおよびoutputバッファは同じバイト配列を参照することができ、結果が出力バッファにコピーされるときに未処理の入力データが上書きされないことが必要です。

        パラメータ:
        input - 入力バッファ
        inputOffset - 入力を開始するinput内のオフセット
        inputLen - 入力長
        output - 結果を格納するバッファ
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない場合
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
      • doFinal

        public final int doFinal​(byte[] input,
                                 int inputOffset,
                                 int inputLen,
                                 byte[] output,
                                 int outputOffset)
                          throws ShortBufferException,
                                 IllegalBlockSizeException,
                                 BadPaddingException
        単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。 データは、この暗号が初期化された方法に従って、暗号化または復号化されます。

        inputOffsetから始まるinputバッファ内の最初のinputLenバイト、および前のupdate操作でバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は、outputOffsetから始まるoutputバッファに格納されます。

        outputバッファが小さすぎて結果を保持できない場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        注: このメソッドはコピーに対して安全である必要があります。つまり、inputおよびoutputバッファは同じバイト配列を参照することができ、結果が出力バッファにコピーされるときに未処理の入力データが上書きされないことが必要です。

        パラメータ:
        input - 入力バッファ
        inputOffset - 入力を開始するinput内のオフセット
        inputLen - 入力長
        output - 結果を格納するバッファ
        outputOffset - 結果が格納されるoutput内のオフセット
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない場合
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
      • doFinal

        public final int doFinal​(ByteBuffer input,
                                 ByteBuffer output)
                          throws ShortBufferException,
                                 IllegalBlockSizeException,
                                 BadPaddingException
        単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。 データは、この暗号が初期化された方法に従って、暗号化または復号化されます。

        input.position()から始まるすべてのinput.remaining()バイトが処理されます。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果はoutputバッファに格納されます。 終了時に、入力バッファの位置はリミットに等しくなりますが、リミットは変更されません。 出力バッファの位置はnだけ増加します。nは、このメソッドが返す値です。出力バッファのリミットは変更されません。

        output.remaining()バイトが結果を保持するのに不十分な場合は、ShortBufferExceptionがスローされます。 この場合、より大きな出力バッファを使用してこの呼出しを繰り返します。 getOutputSizeを使用して、必要な出力バッファのサイズを判定します。

        終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。

        注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。

        注: このメソッドはコピーに対して安全である必要があります。つまり、inputおよびoutputバッファは同じバイト配列を参照することができ、結果が出力バッファにコピーされるときに未処理の入力データが上書きされないことが必要です。

        パラメータ:
        input - 入力ByteBuffer
        output - 出力ByteBuffer
        戻り値:
        outputに格納されたバイト数
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)
        IllegalArgumentException - 入力と出力が同じオブジェクトである場合
        ReadOnlyBufferException - 出力バッファが読取り専用の場合
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。
        ShortBufferException - 出力バッファ内に残っている容量が不足している場合
        BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。
        AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。
        導入されたバージョン:
        1.5
      • wrap

        public final byte[] wrap​(Key key)
                          throws IllegalBlockSizeException,
                                 InvalidKeyException
        鍵をラップします。
        パラメータ:
        key - ラップされる鍵。
        戻り値:
        ラップされた鍵
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)。
        IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず、ラップされる鍵のエンコーディングの長さがブロック・サイズの倍数でない場合。
        InvalidKeyException - この暗号を使用して鍵をラップすることが不可能か安全でない場合(ハードウェア保護された鍵がソフトウェアだけの暗号に渡される場合など)。
        UnsupportedOperationException - CipherSpi内の対応するメソッドがサポートされていない場合。
      • unwrap

        public final Key unwrap​(byte[] wrappedKey,
                                String wrappedKeyAlgorithm,
                                int wrappedKeyType)
                         throws InvalidKeyException,
                                NoSuchAlgorithmException
        前にラップされた鍵をラップ解除します。
        パラメータ:
        wrappedKey - ラップを解除される鍵。
        wrappedKeyAlgorithm - ラップされた鍵に関連したアルゴリズム。
        wrappedKeyType - ラップされた鍵のタイプ。 これは、SECRET_KEYPRIVATE_KEYPUBLIC_KEYのいずれかである必要がある。
        戻り値:
        ラップ解除された鍵
        例外:
        IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)。
        NoSuchAlgorithmException - インストールされているどのプロバイダもwrappedKeyAlgorithmwrappedKeyTypeタイプの鍵を作成できない場合。
        InvalidKeyException - wrappedKeywrappedKeyAlgorithmwrappedKeyTypeタイプのラップされた鍵を表さない場合。
        UnsupportedOperationException - CipherSpi内の対応するメソッドがサポートされていない場合。
      • getMaxAllowedKeyLength

        public static final int getMaxAllowedKeyLength​(String transformation)
                                                throws NoSuchAlgorithmException
        インストールされているJCE管轄ポリシー・ファイルに従って、指定された変換の鍵の最大長を返します。 強度が無制限のJCE管轄ポリシー・ファイルがインストールされている場合は、Integer.MAX_VALUEが返されます。 デフォルトの鍵サイズとJCEの管轄ポリシー・ファイルの詳細については、「JDKプロバイダのドキュメント」の暗号のデフォルトと制限を参照してください。
        パラメータ:
        transformation - 暗号変換。
        戻り値:
        ビット単位の鍵の最大長またはInteger.MAX_VALUE
        例外:
        NullPointerException - transformationがnullである場合。
        NoSuchAlgorithmException - transformationが有効な変換でない場合。すなわち、「algorithm」または「algorithm/mode/padding」の形式でない場合。
        導入されたバージョン:
        1.5
      • getMaxAllowedParameterSpec

        public static final AlgorithmParameterSpec getMaxAllowedParameterSpec​(String transformation)
                                                                       throws NoSuchAlgorithmException
        管轄ポリシー・ファイルに従って、最大の暗号パラメータ値を含むAlgorithmParameterSpecオブジェクトを返します。 強度が無制限のJCE管轄ポリシー・ファイルがインストールされている場合、または指定された変換のパラメータの最大リミットがポリシー・ファイルに存在しない場合、nullが返されます。
        パラメータ:
        transformation - 暗号変換。
        戻り値:
        最大値を保持するAlgorithmParameterSpecまたはnull
        例外:
        NullPointerException - transformationがnullである場合。
        NoSuchAlgorithmException - transformationが有効な変換でない場合。すなわち、「algorithm」または「algorithm/mode/padding」の形式でない場合。
        導入されたバージョン:
        1.5
      • updateAAD

        public final void updateAAD​(byte[] src)
        AAD (Additional Authentication Data)のマルチパート更新を継続します。

        暗号がAEAD (GCM/CCM)などのモードで操作されると、このメソッドの呼出しでAADが提供されます。 この暗号がGCMまたはCCMモードで操作されている場合は、(updateおよびdoFinalメソッドを介した)暗号テキスト上の操作を開始する前に、すべてのAADが提供される必要があります。

        パラメータ:
        src - Additional Authentication Dataを格納するバッファ
        例外:
        IllegalArgumentException - srcバイト配列がnullである場合
        IllegalStateException - この暗号が誤った状態であり(まだ初期化されていないなど)、AADを受け入れない場合、またはGCMまたはCCMモードで操作していて、アクティブな暗号化/復号化操作に対してすでにupdateメソッドが呼び出されている場合
        UnsupportedOperationException - CipherSpi内の対応するメソッドが実装によってオーバーライドされていない場合
        導入されたバージョン:
        1.7
      • updateAAD

        public final void updateAAD​(byte[] src,
                                    int offset,
                                    int len)
        提供されたバッファのサブセットを使用して、Additional Authentication Data (AAD)のマルチパート更新を続行します。

        暗号がAEAD (GCM/CCM)などのモードで操作されると、このメソッドの呼出しでAADが提供されます。 この暗号がGCMまたはCCMモードで操作されている場合は、(updateおよびdoFinalメソッドを介した)暗号テキスト上の操作を開始する前に、すべてのAADが提供される必要があります。

        パラメータ:
        src - AADを格納するバッファ
        offset - AAD入力を開始するsrc内のオフセット
        len - AADバイトの数
        例外:
        IllegalArgumentException - srcバイト配列がnullの場合、offsetlengthが0未満の場合、またはoffsetlenとの合計がsrcバイト配列の長さの値よりも大きい場合
        IllegalStateException - この暗号が誤った状態であり(まだ初期化されていないなど)、AADを受け入れない場合、またはGCMまたはCCMモードで操作していて、アクティブな暗号化/復号化操作に対してすでにupdateメソッドが呼び出されている場合
        UnsupportedOperationException - CipherSpi内の対応するメソッドが実装によってオーバーライドされていない場合
        導入されたバージョン:
        1.7
      • updateAAD

        public final void updateAAD​(ByteBuffer src)
        AAD (Additional Authentication Data)のマルチパート更新を継続します。

        暗号がAEAD (GCM/CCM)などのモードで操作されると、このメソッドの呼出しでAADが提供されます。 この暗号がGCMまたはCCMモードで操作されている場合は、(updateおよびdoFinalメソッドを介した)暗号テキスト上の操作を開始する前に、すべてのAADが提供される必要があります。

        src.position()から始まるすべてのsrc.remaining()バイトが処理されます。 終了時に、入力バッファの位置はリミットに等しくなりますが、リミットは変更されません。

        パラメータ:
        src - AADを格納するバッファ
        例外:
        IllegalArgumentException - src ByteBufferがnullの場合
        IllegalStateException - この暗号が誤った状態であり(まだ初期化されていないなど)、AADを受け入れない場合、またはGCMまたはCCMモードで操作していて、アクティブな暗号化/復号化操作に対してすでにupdateメソッドが呼び出されている場合
        UnsupportedOperationException - CipherSpi内の対応するメソッドが実装によってオーバーライドされていない場合
        導入されたバージョン:
        1.7