- 直系の既知のサブクラス:
NullCipher
Cipher
オブジェクトを作成するために、アプリケーションは暗号のgetInstance
メソッドをコールし、リクエストされたtransformationの名前をそれに渡します。 必要に応じて、プロバイダの名前を指定できます。
変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。 変換には、常に暗号アルゴリズム(例、AES)の名前が含まれ、フィードバック・モードとパディング・スキームが続きます。
変換は、次の書式で記述されます。
- "algorithm/mode/padding"または
- "algorithm"
(後者の場合、モードおよびパディング方式には、プロバイダ固有のデフォルト値が使用されます。) たとえば、次は有効な変換です。
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
CFB
やOFB
などのモードを使用すると、ブロック暗号は、暗号の実際のブロック・サイズよりも小さい単位でデータを暗号化できます。 このようなモードを要求する場合、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)
- 導入されたバージョン:
- 1.4
- 関連項目:
-
フィールドのサマリー
フィールド修飾子と型フィールド説明static final int
暗号を復号化モードに初期化するのに使用する定数です。static final int
暗号を暗号化モードに初期化するのに使用する定数です。static final int
ラップ解除されるキーが「非公開キー」であることを示すのに使用する定数です。static final int
ラップ解除されるキーが「公開キー」であることを示すのに使用する定数です。static final int
ラップ解除されるキーが「秘密キー」であることを示すのに使用する定数です。static final int
暗号をキー・ラッピング解除モードに初期化するのに使用する定数です。static final int
暗号をキー・ラッピング・モードに初期化するのに使用する定数です。 -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明final byte[]
doFinal()
この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
ブロック・サイズを返します(バイト単位)。final ExemptionMechanism
この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[]
getIV()
新しいバッファの初期化ベクトル(IV)を返します。static final int
getMaxAllowedKeyLength
(String transformation) インストールされているJCE管轄ポリシー・ファイルに従って、指定された変換のキーの最大長を返します。static final AlgorithmParameterSpec
getMaxAllowedParameterSpec
(String transformation) 管轄ポリシー・ファイルに従って最大Cipher
パラメータ値を含む {code AlgorithmParameterSpec} オブジェクトを返します。final int
getOutputSize
(int inputLen) 入力の長さinputLen
(バイト単位)を指定して、次のupdate
またはdoFinal
操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。final AlgorithmParameters
このCipher
オブジェクトで使用されるパラメータを返します。final Provider
このCipher
オブジェクトのプロバイダを返します。final void
init
(int opmode, Certificate certificate) このCipher
オブジェクトを、指定された証明書の公開キーで初期化します。final void
init
(int opmode, Certificate certificate, SecureRandom random) このCipher
オブジェクトを、指定された証明書の公開キーとランダム性のソースで初期化します。final void
この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
オブジェクトをキー、アルゴリズム・パラメータのセットおよびランダム性のソースで初期化します。toString()
このCipher
オブジェクトのString
表現を返します。final Key
前にラップされたキーをラップ解除します。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
updateAAD
(ByteBuffer src) AAD (Additional Authentication Data)のマルチパート更新を継続します。final byte[]
キーをラップします。
-
フィールド詳細
-
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
Cipher
オブジェクトを作成します。- パラメータ:
cipherSpi
- 委譲先provider
- プロバイダtransformation
- 変換- 例外:
NullPointerException
-provider
がnull
の場合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
-transformation
がnull
の場合、空の場合、無効な形式の場合、または指定したアルゴリズムに対する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
-provider
がnull
または空の場合NoSuchAlgorithmException
-transformation
がnull
の場合、空の場合、無効な形式の場合、または指定されたアルゴリズムの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
-provider
がnull
の場合NoSuchAlgorithmException
-transformation
がnull
の場合、空の場合、無効な形式の場合、または指定されたアルゴリズムのCipherSpi
実装が指定されたprovider
オブジェクトから使用できない場合NoSuchPaddingException
- 使用できないパディング方式がtransformation
に含まれている場合- 関連項目:
-
getProvider
-
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
-opmode
がWRAP_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
-opmode
がWRAP_MODE
またはUNWRAP_MODE
であるが、基礎となるCipherSpi
によってモードが実装されていない場合InvalidParameterException
-opmode
が認識された値のいずれでもない場合
-
init
public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException このCipher
オブジェクトをキーとアルゴリズム・パラメータのセットで初期化します。Cipher
オブジェクトは、次の4つの操作のいずれかに対して初期化されます:opmode
の値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。この暗号にアルゴリズム・パラメータが必要で、
params
がnull
の場合、基礎となる暗号実装では、暗号化またはキー・ラッピングのために初期化されている場合に必要なパラメータ自体(プロバイダ固有のデフォルト値またはランダム値の使用)を生成し、復号化またはキー・アン・ラップのために初期化されている場合はInvalidAlgorithmParameterException
を生成します。 生成されたパラメータは、getParameters
またはgetIV
(パラメータがIVの場合)を使用して取り出すことができます。この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(フィードバックまたはパディング・スキームを含む)でランダム・バイト(例、パラメータ生成用)が必要な場合は、最も優先度の高いインストール済プロバイダの
SecureRandom
実装をランダム性のソースとして使用して取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)Cipher
オブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してください。 つまり、Cipher
オブジェクトの初期化は、そのCipher
オブジェクトの新しいインスタンスを作成して初期化することと同じです。- パラメータ:
opmode
- このCipher
オブジェクト(これは次のいずれかです:ENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
またはUNWRAP_MODE
)の操作モードkey
- 暗号化キーparams
- アルゴリズム・パラメータ- 例外:
InvalidKeyException
- 指定されたキーがこの暗号の初期化に適していない場合、またはそのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えている場合InvalidAlgorithmParameterException
- 指定されたアルゴリズム・パラメータがこの暗号に適していない場合、またはこの暗号にアルゴリズム・パラメータが必要で、params
がnull
である場合、または指定されたアルゴリズム・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されますUnsupportedOperationException
-opmode
がWRAP_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
の値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。この暗号にアルゴリズム・パラメータが必要で、
params
がnull
の場合、基礎となる暗号実装では、暗号化またはキー・ラッピングのために初期化されている場合に必要なパラメータ自体(プロバイダ固有のデフォルト値またはランダム値の使用)を生成し、復号化またはキー・アン・ラップのために初期化されている場合はInvalidAlgorithmParameterException
を生成します。 生成されたパラメータは、getParameters
またはgetIV
(パラメータがIVの場合)を使用して取り出すことができます。この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(フィードバックまたはパディング・スキームを含む)にランダム・バイト(例、パラメータ生成用)が必要な場合は、
random
から取得します。Cipher
オブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してください。 つまり、Cipher
オブジェクトの初期化は、そのCipher
オブジェクトの新しいインスタンスを作成して初期化することと同じです。- パラメータ:
opmode
- このCipher
オブジェクト(これは次のいずれかです:ENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
またはUNWRAP_MODE
)の操作モードkey
- 暗号化キーparams
- アルゴリズム・パラメータrandom
- 乱数発生の元- 例外:
InvalidKeyException
- 指定されたキーがこの暗号の初期化に適していない場合、またはそのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えている場合InvalidAlgorithmParameterException
- 指定されたアルゴリズム・パラメータがこの暗号に適していない場合、またはこの暗号にアルゴリズム・パラメータが必要で、params
がnull
である場合、または指定されたアルゴリズム・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されますUnsupportedOperationException
-opmode
がWRAP_MODE
またはUNWRAP_MODE
であるが、基礎となるCipherSpi
によってモードが実装されていない場合InvalidParameterException
-opmode
が認識された値のいずれでもない場合
-
init
public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException このCipher
オブジェクトをキーとアルゴリズム・パラメータのセットで初期化します。Cipher
オブジェクトは、次の4つの操作のいずれかに対して初期化されます:opmode
の値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。この暗号にアルゴリズム・パラメータが必要で、
params
がnull
の場合、基礎となる暗号実装では、暗号化またはキー・ラッピングのために初期化されている場合に必要なパラメータ自体(プロバイダ固有のデフォルト値またはランダム値の使用)を生成し、復号化またはキー・アン・ラップのために初期化されている場合はInvalidAlgorithmParameterException
を生成します。 生成されたパラメータは、getParameters
またはgetIV
(パラメータがIVの場合)を使用して取り出すことができます。この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(フィードバックまたはパディング・スキームを含む)でランダム・バイト(例、パラメータ生成用)が必要な場合は、最も優先度の高いインストール済プロバイダの
SecureRandom
実装をランダム性のソースとして使用して取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)Cipher
オブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してください。 つまり、Cipher
オブジェクトの初期化は、そのCipher
オブジェクトの新しいインスタンスを作成して初期化することと同じです。- パラメータ:
opmode
- このCipher
オブジェクトの操作モード。これは次のいずれかです:ENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
またはUNWRAP_MODE
)key
- 暗号化キーparams
- アルゴリズム・パラメータ- 例外:
InvalidKeyException
- 指定されたキーがこの暗号の初期化に不適切な場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。InvalidAlgorithmParameterException
- 指定されたアルゴリズム・パラメータがこの暗号に適していない場合、またはこの暗号にアルゴリズム・パラメータが必要で、params
がnull
である場合、または指定されたアルゴリズム・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されますUnsupportedOperationException
-opmode
がWRAP_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
の値に応じて、暗号化、復号化、キー・ラップまたはキーのアン・ラップを行います。この暗号にアルゴリズム・パラメータが必要で、
params
がnull
の場合、基礎となる暗号実装では、暗号化またはキー・ラッピングのために初期化されている場合に必要なパラメータ自体(プロバイダ固有のデフォルト値またはランダム値の使用)を生成し、復号化またはキー・アン・ラップのために初期化されている場合はInvalidAlgorithmParameterException
を生成します。 生成されたパラメータは、getParameters
またはgetIV
(パラメータがIVの場合)を使用して取り出すことができます。この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(フィードバックまたはパディング・スキームを含む)にランダム・バイト(例、パラメータ生成用)が必要な場合は、
random
から取得します。Cipher
オブジェクトが初期化されると、以前に取得されたすべての状態が失われることに注意してください。 つまり、Cipher
オブジェクトの初期化は、そのCipher
オブジェクトの新しいインスタンスを作成して初期化することと同じです。- パラメータ:
opmode
- このCipher
オブジェクト(これは次のいずれかです:ENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
またはUNWRAP_MODE
)の操作モードkey
- 暗号化キーparams
- アルゴリズム・パラメータrandom
- 乱数発生の元- 例外:
InvalidKeyException
- 指定されたキーがこの暗号の初期化に適していない場合、またはそのキー・サイズが最大許容キー・サイズ(構成済管轄ポリシー・ファイルから決定)を超えている場合InvalidAlgorithmParameterException
- 指定されたアルゴリズム・パラメータがこの暗号に適していない場合、またはこの暗号にアルゴリズム・パラメータが必要で、params
がnull
である場合、または指定されたアルゴリズム・パラメータによって、法的制限(構成済管轄ポリシー・ファイルから決定)を超える暗号化強度が示されますUnsupportedOperationException
-opmode
がWRAP_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
-opmode
がWRAP_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
-opmode
がWRAP_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
- 入力ByteBufferoutput
- 出力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
- 入力ByteBufferoutput
- 出力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_KEY
、PRIVATE_KEY
、PUBLIC_KEY
のいずれかである必要がある- 戻り値:
- ラップ解除されたキー
- 例外:
IllegalStateException
- このCipher
オブジェクトが間違った状態である場合、(たとえば、初期化されていない、またはUNWRAP_MODE
にない)NoSuchAlgorithmException
- インストールされているどのプロバイダもwrappedKeyAlgorithm
のwrappedKeyType
タイプのキーを作成できない場合InvalidKeyException
-wrappedKey
がwrappedKeyAlgorithm
のwrappedKeyType
タイプのラップされたキーを表さない場合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 管轄ポリシー・ファイルに従って最大Cipher
パラメータ値を含む {code AlgorithmParameterSpec} オブジェクトを返します。 JCE無制限の強度の管轄区域ポリシー・ファイルがインストールされている場合、またはポリシー・ファイルの指定された変換のパラメータに最大制限がない場合、null
が返されます。- パラメータ:
transformation
- 暗号変換- 戻り値:
- 最大値または
null
を保持する {code AlgorithmParameterSpec} オブジェクト - 例外:
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)などのモードで操作するときに
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 ByteBuffer
がnull
の場合IllegalStateException
- このCipher
オブジェクトが間違った状態である(たとえば、初期化されていないか、ENCRYPT_MODE
またはDECRYPT_MODE
にない)の場合、AADを受け入れない場合、またはGCMモードまたはCCMモードで動作していて、いずれかのupdate
メソッドがアクティブな暗号化/復号化操作のためにすでにコールされている場合UnsupportedOperationException
-CipherSpi
内の対応するメソッドが実装によってオーバーライドされていない場合- 導入されたバージョン:
- 1.7
-
toString
-