- 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");CFBやOFBなどのモードを使用すると、ブロック暗号は、暗号の実際のブロック・サイズよりも小さい単位でデータを暗号化できます。 このようなモードを要求する場合、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)DES/CBC/NoPadding(56)DES/CBC/PKCS5Padding(56)DES/ECB/NoPadding(56)DES/ECB/PKCS5Padding(56)DESede/CBC/NoPadding(168)DESede/CBC/PKCS5Padding(168)DESede/ECB/NoPadding(168)DESede/ECB/PKCS5Padding(168)RSA/ECB/PKCS1Padding(1024、2048)RSA/ECB/OAEPWithSHA-1AndMGF1Padding(1024、2048)RSA/ECB/OAEPWithSHA-256AndMGF1Padding(1024、2048)
- 導入されたバージョン:
- 1.4
- 関連項目:
KeyGenerator,SecretKey
-
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static intDECRYPT_MODE暗号を復号化モードに初期化するのに使用する定数です。static intENCRYPT_MODE暗号を暗号化モードに初期化するのに使用する定数です。static intPRIVATE_KEYラップ解除されるキーが「非公開キー」であることを示すのに使用する定数です。static intPUBLIC_KEYラップ解除されるキーが「公開キー」であることを示すのに使用する定数です。static intSECRET_KEYラップ解除されるキーが「秘密キー」であることを示すのに使用する定数です。static intUNWRAP_MODE暗号をキー・ラッピング解除モードに初期化するのに使用する定数です。static intWRAP_MODE暗号をキー・ラッピング・モードに初期化するのに使用する定数です。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 byte[]doFinal()複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。byte[]doFinal(byte[] input)単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。intdoFinal(byte[] output, int outputOffset)複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。byte[]doFinal(byte[] input, int inputOffset, int inputLen)単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。intdoFinal(byte[] input, int inputOffset, int inputLen, byte[] output)単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。intdoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。intdoFinal(ByteBuffer input, ByteBuffer output)単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。StringgetAlgorithm()このCipherオブジェクトのアルゴリズム名を返します。intgetBlockSize()ブロック・サイズを返します(バイト単位)。ExemptionMechanismgetExemptionMechanism()この暗号で使用される除外メカニズム・オブジェクトを返します。static CiphergetInstance(String transformation)指定された変換を実装するCipherオブジェクトを返します。static CiphergetInstance(String transformation, String provider)指定された変換を実装するCipherオブジェクトを返します。static CiphergetInstance(String transformation, Provider provider)指定された変換を実装するCipherオブジェクトを返します。byte[]getIV()新しいバッファの初期化ベクトル(IV)を返します。static intgetMaxAllowedKeyLength(String transformation)インストールされているJCE管轄ポリシー・ファイルに従って、指定された変換のキーの最大長を返します。static AlgorithmParameterSpecgetMaxAllowedParameterSpec(String transformation)管轄ポリシー・ファイルに従って、最大の暗号パラメータ値を含むAlgorithmParameterSpecオブジェクトを返します。intgetOutputSize(int inputLen)入力の長さinputLen(バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。AlgorithmParametersgetParameters()この暗号で使用されるパラメータを返します。ProvidergetProvider()このCipherオブジェクトのプロバイダを返します。voidinit(int opmode, Certificate certificate)この暗号を、検証操作のために指定された公開キーで初期化します。voidinit(int opmode, Certificate certificate, SecureRandom random)この暗号を、検証操作のために指定された公開キーおよび乱数発生の元を使って初期化します。voidinit(int opmode, Key key)キーを使用してこの暗号を初期化します。voidinit(int opmode, Key key, AlgorithmParameters params)キーとアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。voidinit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)キー、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。voidinit(int opmode, Key key, SecureRandom random)キーと乱数発生の元を使用してこの暗号を初期化します。voidinit(int opmode, Key key, AlgorithmParameterSpec params)キーとアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。voidinit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)キー、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。Keyunwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)前にラップされたキーをラップ解除します。byte[]update(byte[] input)複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。byte[]update(byte[] input, int inputOffset, int inputLen)複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。intupdate(byte[] input, int inputOffset, int inputLen, byte[] output)複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。intupdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。intupdate(ByteBuffer input, ByteBuffer output)複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。voidupdateAAD(byte[] src)AAD (Additional Authentication Data)のマルチパート更新を継続します。voidupdateAAD(byte[] src, int offset, int len)提供されたバッファのサブセットを使用して、Additional Authentication Data (AAD)のマルチパート更新を続行します。voidupdateAAD(ByteBuffer src)AAD (Additional Authentication Data)のマルチパート更新を継続します。byte[]wrap(Key key)キーをラップします。
-
-
-
フィールドの詳細
-
ENCRYPT_MODE
public static final int ENCRYPT_MODE
暗号を暗号化モードに初期化するのに使用する定数です。- 関連項目:
- 定数フィールド値
-
DECRYPT_MODE
public static final int DECRYPT_MODE
暗号を復号化モードに初期化するのに使用する定数です。- 関連項目:
- 定数フィールド値
-
WRAP_MODE
public static final int WRAP_MODE
暗号をキー・ラッピング・モードに初期化するのに使用する定数です。- 関連項目:
- 定数フィールド値
-
UNWRAP_MODE
public static final int UNWRAP_MODE
暗号をキー・ラッピング解除モードに初期化するのに使用する定数です。- 関連項目:
- 定数フィールド値
-
PUBLIC_KEY
public static final int PUBLIC_KEY
ラップ解除されるキーが「公開キー」であることを示すのに使用する定数です。- 関連項目:
- 定数フィールド値
-
PRIVATE_KEY
public static final int PRIVATE_KEY
ラップ解除されるキーが「非公開キー」であることを示すのに使用する定数です。- 関連項目:
- 定数フィールド値
-
SECRET_KEY
public static final int SECRET_KEY
ラップ解除されるキーが「秘密キー」であることを示すのに使用する定数です。- 関連項目:
- 定数フィールド値
-
-
メソッドの詳細
-
getInstance
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
指定された変換を実装するCipherオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、
jdk.security.provider.preferredSecurityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
transformation- 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。- 戻り値:
- 要求された変換を実装する暗号
- 例外:
NoSuchAlgorithmException-transformationがnull、空の、無効な形式、またはProviderが指定されたアルゴリズムのCipherSpi実装をサポートしていない場合NoSuchPaddingException- 使用できないパディング方式がtransformationに含まれている場合- 関連項目:
Provider
-
getInstance
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
指定された変換を実装するCipherオブジェクトを返します。指定されたプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- パラメータ:
transformation- 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。provider- プロバイダ名- 戻り値:
- 要求された変換を実装する暗号
- 例外:
IllegalArgumentException-providerがnullまたは空の場合NoSuchAlgorithmException-transformationがnull、空であるか、無効な形式である場合、または指定されたアルゴリズムのCipherSpi実装が指定されたプロバイダから利用できない場合NoSuchPaddingException- 使用できないパディング方式がtransformationに含まれている場合NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合- 関連項目:
Provider
-
getInstance
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
指定された変換を実装するCipherオブジェクトを返します。指定されたProviderオブジェクトからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
transformation- 変換の名前です(例:AES/CBC/PKCS5Padding)。 標準変換名については、「Javaセキュリティ標準アルゴリズム名指定」のCipherセクションを参照してください。provider- プロバイダ- 戻り値:
- 要求された変換を実装する暗号
- 例外:
IllegalArgumentException-providerがnullの場合NoSuchAlgorithmException-transformationがnull、空の、無効な形式、または指定されたアルゴリズムのCipherSpi実装が指定されたProviderオブジェクトから利用できない場合NoSuchPaddingException- 使用できないパディング方式がtransformationに含まれている場合- 関連項目:
Provider
-
getProvider
public final Provider getProvider()
このCipherオブジェクトのプロバイダを返します。- 戻り値:
- この
Cipherオブジェクトのプロバイダ
-
getAlgorithm
public final String getAlgorithm()
このCipherオブジェクトのアルゴリズム名を返します。これは、この
Cipherオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。- 戻り値:
- この
Cipherオブジェクトのアルゴリズム名。
-
getBlockSize
public final int getBlockSize()
ブロック・サイズを返します(バイト単位)。- 戻り値:
- ブロック・サイズ(バイト単位)。基本となるアルゴリズムがブロック暗号でない場合は0
-
getOutputSize
public final int getOutputSize(int inputLen)
入力の長さinputLen(バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。この呼出しでは、以前の
update呼出しの処理されていない(バッファにある)データを考慮し、パディングおよびAEADタグ付けを行います。次の
updateまたはdoFinal呼出しの実際の出力長は、このメソッドが返す長さより小さいことがあります。- パラメータ:
inputLen- 入力長(バイト単位)- 戻り値:
- 必要な出力バッファ・サイズ(バイト単位)
- 例外:
IllegalStateException- この暗号が誤った状態にある場合(まだ初期化されていないなど)
-
getIV
public final byte[] getIV()
新しいバッファの初期化ベクトル(IV)を返します。これは、ランダムIVが作成された場合、あるいはIVがユーザー指定のパスワードから派生するパスワードベースの暗号化または復号化のコンテキストにおいて役立ちます。
- 戻り値:
- 新しいバッファ内の初期化ベクトル。基本となるアルゴリズムがIVを使用しない場合、またはIVが設定されていない場合はnull
-
getParameters
public final AlgorithmParameters getParameters()
この暗号で使用されるパラメータを返します。返されるパラメータは、この暗号を初期化するのに使用したものと同じ場合があります。または、返されるパラメータには、この暗号にアルゴリズム・パラメータが必要で、かつアルゴリズム・パラメータで初期化されなかった場合に、基本となる暗号実装で使用されるデフォルトとランダムのパラメータ値の組み合わせが含まれることもあります。
- 戻り値:
- この暗号で使用されるパラメータ。この暗号でパラメータを使用しない場合はnull
-
getExemptionMechanism
public final ExemptionMechanism getExemptionMechanism()
この暗号で使用される除外メカニズム・オブジェクトを返します。- 戻り値:
- この暗号で使用される除外メカニズム・オブジェクト。この暗号で除外メカニズムを使用しない場合はnull
-
init
public final void init(int opmode, Key key) throws InvalidKeyExceptionキーを使用してこの暗号を初期化します。この暗号は、
opmodeの値に従って、暗号化、復号化、キー・ラッピング、またはキー・ラッピング解除の4つの操作の1つに合わせて初期化されます。この暗号が、指定された
keyから派生できないアルゴリズム・パラメータを必要とする場合、基本となる暗号実装は、暗号化またはキー・ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化またはキー・ラッピング解除用に初期化されていれば、InvalidKeyExceptionを発生させます。 生成されたパラメータは、getParametersまたはgetIV(パラメータがIVの場合)を使用して取り出すことができます。この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、乱数発生の元として最優先の順位でインストールされているプロバイダの
SecureRandomの実装を使用して取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。 つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。
- パラメータ:
opmode- この暗号の操作モード(ENCRYPT_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)key- キー- 例外:
InvalidKeyException- 指定されたキーがこの暗号の初期化に不適切な場合、この暗号が指定されたキーから判定することができないアルゴリズム・パラメータを必要とする場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)key- 暗号化キーrandom- 乱数発生の元- 例外:
InvalidKeyException- 指定されたキーがこの暗号の初期化に不適切な場合、この暗号が指定されたキーから判定することができないアルゴリズム・パラメータを必要とする場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)key- 暗号化キーparams- アルゴリズム・パラメータ- 例外:
InvalidKeyException- 指定されたキーがこの暗号の初期化に不適切な場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。InvalidAlgorithmParameterException- 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)key- 暗号化キーparams- アルゴリズム・パラメータrandom- 乱数発生の元- 例外:
InvalidKeyException- 指定されたキーがこの暗号の初期化に不適切な場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。InvalidAlgorithmParameterException- 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)key- 暗号化キーparams- アルゴリズム・パラメータ- 例外:
InvalidKeyException- 指定されたキーがこの暗号の初期化に不適切な場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。InvalidAlgorithmParameterException- 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)key- 暗号化キーparams- アルゴリズム・パラメータrandom- 乱数発生の元- 例外:
InvalidKeyException- 指定されたキーがこの暗号の初期化に不適切な場合、または指定されたキーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。InvalidAlgorithmParameterException- 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、この暗号がアルゴリズム・パラメータを必要とし、paramsがnullの場合、または指定されたアルゴリズム・パラメータが有効な制限(設定されている管轄ポリシー・ファイルにより決定)を超える暗号化強度を示す場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)certificate- 証明書- 例外:
InvalidKeyException- 指定された証明書の公開キーがこの暗号の初期化に不適切な場合、この暗号が指定された証明書の公開キーから判定することができないアルゴリズム・パラメータを必要とする場合、または指定された証明書の公開キーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。UnsupportedOperationException-opmodeがWRAP_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_MODE、DECRYPT_MODE、WRAP_MODE、またはUNWRAP_MODEのどれか)certificate- 証明書random- 乱数発生の元- 例外:
InvalidKeyException- 指定された証明書の公開キーがこの暗号の初期化に不適切な場合、この暗号が指定された証明書の公開キーから判定することができないアルゴリズム・パラメータを必要とする場合、または指定された証明書の公開キーのサイズが最大許容キー・サイズ(設定されている管轄ポリシー・ファイルにより決定)を超える場合。UnsupportedOperationException-opmodeがWRAP_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- 入力ByteBufferoutput- 出力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- 入力ByteBufferoutput- 出力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_KEY、PRIVATE_KEY、PUBLIC_KEYのいずれかである必要がある。- 戻り値:
- ラップ解除されたキー
- 例外:
IllegalStateException- この暗号が誤った状態にある場合(初期化されていないなど)。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
管轄ポリシー・ファイルに従って、最大の暗号パラメータ値を含む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の場合、offsetかlengthが0未満の場合、またはoffsetとlenとの合計が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
-
-