クラスCipher

java.lang.Object
javax.crypto.Cipher
直系の既知のサブクラス:
NullCipher

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

Cipherオブジェクトを作成するために、アプリケーションは暗号のgetInstanceメソッドをコールし、リクエストされたtransformationの名前をそれに渡します。 必要に応じて、プロバイダの名前を指定できます。

変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。 変換には、常に暗号アルゴリズ (例、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)の両方に信 性の証明を提供します。 (GCM/CCMなどのAEADおよびAADアルゴリズ の詳細は、RFC 5116を参照してく さい。) 機密データとAADデータは、どちらも認証タグを計算するときに使用できます(Macに似ています)。 このタグは暗号化の際に暗号テキストに追 され、復号化の際に検証されます。

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

GCMモードでは、ある特定のキーによる暗号化に使用されるIVは一意でなければならないという要件があります。 GCM暗号化にIVを繰り返し使用すると、偽 攻撃の対象になります。 したがって、GCMモードを使用する各暗号化演算の後に、コール元は、IV値が異なるGCMパラメータを使用してCipherオブジェクトを再初期化する必要があります。

     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);
     ...

 
ChaCha20およびChaCha20-Poly1305アルゴリズ では、特定のキーを使用する一意のnoncesにも同様の要件があります。 暗号化または復号化操作のたびに、呼出し元は異なるnonce値を指定するパラメータを使用してChaCha20またはChaCha20-Poly1305暗号を再初期化する必要があります。 ChaCha20およびChaCha20-Poly1305アルゴリズ の詳細は、RFC 7539を参照してく さい。

Javaプラットフォー のすべての実装は、カッコ内のキー・サイズを使用した次の標準のCipherオブジェクト変換をサポートするために必要です:

  • AES/CBC/NoPadding (128)
  • AES/CBC/PKCS5Padding (128)
  • AES/ECB/NoPadding (128)
  • AES/ECB/PKCS5Padding (128)
  • AES/GCM/NoPadding (128)
  • 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
外部仕様
関連 目:
  • フィールドのサマリー

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

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

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

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • 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 - 変換
      スロー:
      NullPointerException - providernullの 合
      IllegalArgumentException - 指定された引数がCipherオブジェクトの作成に対して無効とみなされる 合
  • メソッドの詳細

    • getInstance

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

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

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

      APIのノート:
      アルゴリズ 、モードおよびパディングを完全に指定した変換を使用することをお薦めします。 これを行わないと、プロバイダはアプリケーションのセキュリティ要件を満たしていないモードおよびパディングにデフォルトを使用します。
      実装上のノート:
      JDKリファレンス実装では、さらにjdk.security.provider.preferred Securityプロパティを使用して、指定したアルゴリズ の優先プロバイダ 序を決定します。 これは、Security.getProviders()によって返されるプロバイダの 序とは異なる 合があります。 JDKプロバイダで使用される変換のデフォルト値については、「JDKプロバイダ」ドキュメントの「暗号化変換」セクションも参照してく さい。
      パラメータ:
      transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名の詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」の「暗号」の を参照してく さい。
      戻り値:
      リクエストされた変換を実装するCipherオブジェクト
      スロー:
      NoSuchAlgorithmException - transformationnullの 合、空の 合、無効な形式の 合、または指定したアルゴリズ に対するCipherSpi実装をプロバイダがサポートしていない 合
      NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている 合
      関連 目:
    • getInstance

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

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

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

      APIのノート:
      アルゴリズ 、モードおよびパディングを完全に指定した変換を使用することをお薦めします。 これを行わないと、プロバイダはアプリケーションのセキュリティ要件を満たしていないモードおよびパディングにデフォルトを使用します。
      実装上のノート:
      JDKプロバイダが使用する変換のデフォルト値については、「JDKプロバイダ」ドキュメントの「暗号化変換」セクションを参照してく さい。
      パラメータ:
      transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名の詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」の「暗号」の を参照してく さい。
      provider - プロバイダ名
      戻り値:
      リクエストされた変換を実装するCipherオブジェクト
      スロー:
      IllegalArgumentException - providernullまたは空の 合
      NoSuchAlgorithmException - transformationnullの 合、空の 合、無効な形式の 合、または指定されたアルゴリズ のCipherSpi実装が指定されたプロバイダから使用できない 合
      NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている 合
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない 合
      関連 目:
    • getInstance

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

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

      APIのノート:
      アルゴリズ 、モードおよびパディングを完全に指定した変換を使用することをお薦めします。 これを行わないと、プロバイダはアプリケーションのセキュリティ要件を満たしていないモードおよびパディングにデフォルトを使用します。
      実装上のノート:
      JDKプロバイダが使用する変換のデフォルト値については、「JDKプロバイダ」ドキュメントの「暗号化変換」セクションを参照してく さい。
      パラメータ:
      transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名の詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」の「暗号」の を参照してく さい。
      provider - プロバイダ
      戻り値:
      リクエストされた変換を実装するCipherオブジェクト
      スロー:
      IllegalArgumentException - providernullの 合
      NoSuchAlgorithmException - transformationnullの 合、空の 合、無効な形式の 合、または指定されたアルゴリズ のCipherSpi実装が指定されたproviderオブジェクトから使用できない 合
      NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている 合
      関連 目:
    • 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 - このCipherオブジェクトが間違った状態にある 合、(例:ま 初期化されていません)
    • getIV

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

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

      戻り値:
      新しいバッファ内の初期化ベクトル。この暗号がIVを使用しない 合、またはIVがま 設定されていない 合はnull
    • getParameters

      public final AlgorithmParameters getParameters()
      このCipherオブジェクトで使用されるパラメータを返します。

      返されるパラメータは、この暗号の初期化に使用されたものと同じか、基礎となる暗号実装で使用される追 のデフォルトまたはランダ ・パラメータ値が含まれる 合があります。 必要なパラメータが指定されておらず、暗号によって生成できる 合は、生成されたパラメータが返されます。 それ以外の 合はnullが返されます。

      戻り値:
      この暗号で使用されるパラメータ、またはnull
    • getExemptionMechanism

      public final ExemptionMechanism getExemptionMechanism()
      このCipherオブジェクトで使用される免税メカニズ ・オブジェクトを返します。
      戻り値:
      このCipherオブジェクトで使用される免税メカニズ ・オブジェクト。このCipherオブジェクトで免税メカニズ が使用されていない 合はnull
    • init

      public final void init(int opmode, Key key) throws InvalidKeyException
      このCipherオブジェクトをキーで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

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

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      key - キー
      スロー:
      InvalidKeyException - 指定されたキーがこの暗号の初期化に不適切であるか、指定されたキーから決定できないアルゴリズ ・パラメータが必要な 合、または指定されたキーに最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えるキー・サイズがある 合
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
      このCipherオブジェクトをキーとランダ 性のソースで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

      この暗号(フィードバックまたはパディング・スキー を含む)にランダ ・バイト(例、パラメータ生成用)が必要な 合は、randomから取得します。

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      key - 暗号化キー
      random - 乱数発生の元
      スロー:
      InvalidKeyException - 指定されたキーがこの暗号の初期化に不適切であるか、指定されたキーから決定できないアルゴリズ ・パラメータが必要な 合、または指定されたキーに最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えるキー・サイズがある 合
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
      このCipherオブジェクトをキーとアルゴリズ ・パラメータのセットで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

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

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      key - 暗号化キー
      params - アルゴリズ ・パラメータ
      スロー:
      InvalidKeyException - 指定されたキーがこの暗号の初期化に適していない 合、またはそのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えている 合
      InvalidAlgorithmParameterException - 指定されたアルゴリズ ・パラメータがこの暗号に適していない 合、またはこの暗号にアルゴリズ ・パラメータが必要で、paramsnullである 合、または指定されたアルゴリズ ・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されます
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
      このCipherオブジェクトをキー、アルゴリズ ・パラメータのセットおよびランダ 性のソースで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

      この暗号(フィードバックまたはパディング・スキー を含む)にランダ ・バイト(例、パラメータ生成用)が必要な 合は、randomから取得します。

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      key - 暗号化キー
      params - アルゴリズ ・パラメータ
      random - 乱数発生の元
      スロー:
      InvalidKeyException - 指定されたキーがこの暗号の初期化に適していない 合、またはそのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えている 合
      InvalidAlgorithmParameterException - 指定されたアルゴリズ ・パラメータがこの暗号に適していない 合、またはこの暗号にアルゴリズ ・パラメータが必要で、paramsnullである 合、または指定されたアルゴリズ ・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されます
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException
      このCipherオブジェクトをキーとアルゴリズ ・パラメータのセットで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

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

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクトの操作モード。これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)
      key - 暗号化キー
      params - アルゴリズ ・パラメータ
      スロー:
      InvalidKeyException - 指定されたキーがこの暗号の初期化に不適切な 合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える 合。
      InvalidAlgorithmParameterException - 指定されたアルゴリズ ・パラメータがこの暗号に適していない 合、またはこの暗号にアルゴリズ ・パラメータが必要で、paramsnullである 合、または指定されたアルゴリズ ・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されます
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
      このCipherオブジェクトをキー、アルゴリズ ・パラメータのセットおよびランダ 性のソースで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

      この暗号(フィードバックまたはパディング・スキー を含む)にランダ ・バイト(例、パラメータ生成用)が必要な 合は、randomから取得します。

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      key - 暗号化キー
      params - アルゴリズ ・パラメータ
      random - 乱数発生の元
      スロー:
      InvalidKeyException - 指定されたキーがこの暗号の初期化に適していない 合、またはそのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えている 合
      InvalidAlgorithmParameterException - 指定されたアルゴリズ ・パラメータがこの暗号に適していない 合、またはこの暗号にアルゴリズ ・パラメータが必要で、paramsnullである 合、または指定されたアルゴリズ ・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されます
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Certificate certificate) throws InvalidKeyException
      このCipherオブジェクトを、指定された証明書の公開キーで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

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

      この暗号(フィードバックまたはパディング・スキー を含む)にランダ ・バイト(例、パラメータ生成用)が必要な 合は、最も優先度の高いインストール済プロバイダのSecureRandom実装をランダ 性のソースとして使用して取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない 合は、システ が提供する乱数発生の元が使用されます。)

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      certificate - 証明書
      スロー:
      InvalidKeyException - 指定された証明書の公開キーがこの暗号の初期化に不適切である 合、またはこの暗号に、指定された証明書の公開キーから決定できないアルゴリズ ・パラメータが必要な 合、または指定された証明書の公開キーのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルによって決定されます)を超えているキー・サイズがあります
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • init

      public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
      このCipherオブジェクトを、指定された証明書の公開キーとランダ 性のソースで初期化します。

      Cipherオブジェクトは、次の4つの操作のいずれかに対して初期化されます: opmodeの値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。

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

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

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

      この暗号(フィードバックまたはパディング・スキー を含む)にランダ ・バイト(例、パラメータ生成用)が必要な 合は、randomから取得します。

      Cipherオブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してく さい。 つまり、Cipherオブジェクトの初期化は、そのCipherオブジェクトの新しいインスタンスを作成して初期化することと同じです。

      パラメータ:
      opmode - このCipherオブジェクト(これは次のいずれかです: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODEまたはUNWRAP_MODE)の操作モード
      certificate - 証明書
      random - 乱数発生の元
      スロー:
      InvalidKeyException - 指定された証明書の公開キーがこの暗号の初期化に不適切である 合、またはこの暗号に、指定された証明書の公開キーから決定できないアルゴリズ ・パラメータが必要な 合、または指定された証明書の公開キーのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルによって決定されます)を超えているキー・サイズがあります
      UnsupportedOperationException - opmodeWRAP_MODEまたはUNWRAP_MODEであるが、基礎となるCipherSpiによってモードが実装されていない 合
      InvalidParameterException - opmodeが認識された値のいずれでもない 合
    • update

      public final byte[] update(byte[] input)
      複数部分の暗号化または復号化操作(このCipherオブジェクトの初期化方法に応じて)を続行し、別のデータ部分を処理します。

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

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

      パラメータ:
      input - 入力バッファ
      戻り値:
      結果を含む新しいバッファ、またはこの暗号がブロック暗号であり、入力データが短すぎて新しいブロックが生成されない 合はnull
      スロー:
      IllegalStateException - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)
    • update

      public final byte[] update(byte[] input, int inputOffset, int inputLen)
      複数部分の暗号化または復号化操作(このCipherオブジェクトの初期化方法に応じて)を続行し、別のデータ部分を処理します。

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

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

      パラメータ:
      input - 入力バッファ
      inputOffset - 入力を開始するinput内のオフセット
      inputLen - 入力長
      戻り値:
      結果を含む新しいバッファ。この暗号がブロック暗号であり、入力データが短すぎて新しいブロックになる 合はnull
      スロー:
      IllegalStateException - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)
    • update

      public final int update(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException
      複数部分の暗号化または復号化操作(このCipherオブジェクトの初期化方法に応じて)を続行し、別のデータ部分を処理します。

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

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

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

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

      パラメータ:
      input - 入力バッファ
      inputOffset - 入力を開始するinput内のオフセット
      inputLen - 入力長
      output - 結果を 納するバッファ
      戻り値:
      outputに 納されたバイト数
      スロー:
      IllegalStateException - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)
      ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない 合
    • update

      public final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
      複数部分の暗号化または復号化操作(このCipherオブジェクトの初期化方法に応じて)を続行し、別のデータ部分を処理します。

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

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

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

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

      パラメータ:
      input - 入力バッファ
      inputOffset - 入力を開始するinput内のオフセット
      inputLen - 入力長
      output - 結果を 納するバッファ
      outputOffset - 結果が 納されるoutput内のオフセット
      戻り値:
      outputに 納されたバイト数
      スロー:
      IllegalStateException - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)
      ShortBufferException - 指定された出力バッファが小さすぎて結果を保持できない 合
    • update

      public final int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException
      複数部分の暗号化または復号化操作(このCipherオブジェクトの初期化方法に応じて)を続行し、別のデータ部分を処理します。

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

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

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

      パラメータ:
      input - 入力ByteBuffer
      output - 出力ByteBuffer
      戻り値:
      outputに 納されたバイト数
      スロー:
      IllegalStateException - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)
      IllegalArgumentException - 入力と出力が同じオブジェクトである 合
      ReadOnlyBufferException - 出力バッファが読取り専用の 合
      ShortBufferException - 出力バッファ内に残っている容量が不足している 合
      導入されたバージョン:
      1.5
    • doFinal

      public final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException
      このCipherオブジェクトの初期化方法に応じて、複数パートの暗号化または復号化操作を終了します。

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

      public final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, BadPaddingException
      このCipherオブジェクトの初期化方法に応じて、複数パートの暗号化または復号化操作を終了します。

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

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

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

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

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

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

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

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

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

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

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

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

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

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

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

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

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

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

      ノート: 例外がスローされた 合、このCipherオブジェクトは、再使用する前にリセットする必要がある 合があります。

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

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

      public final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
      キーをラップします。
      パラメータ:
      key - ラップされるキー
      戻り値:
      ラップされたキー
      スロー:
      IllegalStateException - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていない、またはWRAP_MODEにない)
      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 - このCipherオブジェクトが間違った状態である 合、(たとえば、初期化されていない、またはUNWRAP_MODEにない)
      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 - transformationnullの 合
      NoSuchAlgorithmException - transformationが有効な変換でない 合、つまり、"algorithm"または"algorithm/mode/padding"の形式
      導入されたバージョン:
      1.5
    • getMaxAllowedParameterSpec

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

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

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

      パラメータ:
      src - Additional Authentication Dataを 納するバッファ
      スロー:
      IllegalArgumentException - srcバイト配列がnullの 合
      IllegalStateException - このCipherオブジェクトが間違った状態である(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)の 合、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)などのモードで操作するときにCipherオブジェクトにAADが提供されます。 このCipherオブジェクトがGCMまたはCCMモードで動作している 合は、暗号テキスト(updateおよびdoFinalメソッドを使用)の操作を開始する前に、すべてのAADを指定する必要があります。

      パラメータ:
      src - AADを 納するバッファ
      offset - AAD入力を開始するsrc内のオフセット
      len - AADバイトの数
      スロー:
      IllegalArgumentException - srcバイト配列がnullであるか、offsetまたはlengthが0未満であるか、offsetおよびlenの合計がsrcバイト配列の長さより大きい 合
      IllegalStateException - このCipherオブジェクトが間違った状態である(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)の 合、AADを受け入れない 合、またはGCMモードまたはCCMモードで動作していて、いずれかのupdateメソッドがアクティブな暗号化/復号化操作のためにすでにコールされている 合
      UnsupportedOperationException - CipherSpi内の対応するメソッドが実装によってオーバーライドされていない 合
      導入されたバージョン:
      1.7
    • updateAAD

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

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

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

      パラメータ:
      src - AADを 納するバッファ
      スロー:
      IllegalArgumentException - src ByteBuffernullの 合
      IllegalStateException - このCipherオブジェクトが間違った状態である(たとえば、初期化されていないか、ENCRYPT_MODEまたはDECRYPT_MODEにない)の 合、AADを受け入れない 合、またはGCMモードまたはCCMモードで動作していて、いずれかのupdateメソッドがアクティブな暗号化/復号化操作のためにすでにコールされている 合
      UnsupportedOperationException - CipherSpi内の対応するメソッドが実装によってオーバーライドされていない 合
      導入されたバージョン:
      1.7
    • toString

      public String toString()
      このCipherオブジェクトのString表現を返します。
      オーバーライド:
      toString、クラスObject
      実装上のノート:
      この実装は、このCipherオブジェクトの変換、モードおよびプロバイダを含むStringを返します。 Stringの正確な形式は指定されず、変更される可能性があります。
      戻り値:
      このCipherオブジェクトを記述する文字列