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

クラスCipher

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

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

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

変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。 変換には、暗号化アルゴリズムの名前(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);
     ...

 
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[]
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。
    final byte[]
    doFinal(byte[] input)
    単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
    final int
    doFinal(byte[] output, int outputOffset)
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。
    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
    ブロック・サイズを返します(バイト単位)。
    この暗号で使用される除外メカニズム・オブジェクトを返します。
    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管轄ポリシー・ファイルに従って、指定された変換のキーの最大長を返します。
    管轄ポリシー・ファイルに従って、最大の暗号パラメータ値を含むAlgorithmParameterSpecオブジェクトを返します。
    final int
    getOutputSize(int inputLen)
    入力の長さinputLen (バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。
    この暗号で使用されるパラメータを返します。
    final Provider
    このCipherオブジェクトのプロバイダを返します。
    final void
    init(int opmode, Certificate certificate)
    この暗号を、検証操作のために指定された公開キーで初期化します。
    final void
    init(int opmode, Certificate certificate, SecureRandom random)
    この暗号を、検証操作のために指定された公開キーおよび乱数発生の元を使って初期化します。
    final void
    init(int opmode, Key key)
    キーを使用してこの暗号を初期化します。
    final void
    init(int opmode, Key key, AlgorithmParameters params)
    キーとアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。
    final void
    init(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
    キー、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
    final void
    init(int opmode, Key key, SecureRandom random)
    キーと乱数発生の元を使用してこの暗号を初期化します。
    final void
    init(int opmode, Key key, AlgorithmParameterSpec params)
    キーとアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。
    final void
    init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
    キー、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
    この暗号化方式の文字列表現を返します。
    final Key
    unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
    前にラップされたキーをラップ解除します。
    final byte[]
    update(byte[] input)
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
    final byte[]
    update(byte[] input, int inputOffset, int inputLen)
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
    final int
    update(byte[] input, int inputOffset, int inputLen, byte[] output)
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
    final int
    update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
    final int
    update(ByteBuffer input, ByteBuffer output)
    複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
    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 - 指定された引数が暗号オブジェクトを作成するのに無効であると判断される場合
  • メソッドの詳細

    • getInstance

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

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

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

      APIのノート:
      アルゴリズム、モードおよびパディングを完全に指定した変換を使用することをお薦めします。 これを行わないと、プロバイダはアプリケーションのセキュリティ要件を満たしていないモードおよびパディングにデフォルトを使用します。
      実装上のノート:
      JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。 JDKプロバイダで使用される変換のデフォルト値については、「JDKプロバイダ」ドキュメントの「暗号化変換」セクションも参照してください。
      パラメータ:
      transformation - 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。
      戻り値:
      要求された変換を実装する暗号
      例外:
      NoSuchAlgorithmException - transformationnull、空の、無効な形式、またはProviderが指定されたアルゴリズムの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セキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。
      provider - プロバイダ名
      戻り値:
      要求された変換を実装する暗号
      例外:
      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セキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。
      provider - プロバイダ
      戻り値:
      要求された変換を実装する暗号
      例外:
      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 - この暗号が誤った状態にある場合(まだ初期化されていないなど)
    • 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
    • toString

      public String toString()
      この暗号化方式の文字列表現を返します。
      オーバーライド:
      toString、クラスObject
      実装上のノート:
      この実装は、この暗号化の変換、モードおよびプロバイダを含む文字列を返します。 文字列の正確な書式が指定されていないため、変更される可能性があります。
      戻り値:
      この暗号化方式を説明する文字列