public class Cipher extends Object
Cipherオブジェクトを生成するには、アプリケーションはCipherのgetInstanceメソッドを呼び出して、要求された変換の名前を渡します。 必要に応じて、プロバイダの名前を指定できます。
変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。 変換には、暗号化アルゴリズムの名前(AESなど)が必ず含まれます。それにフィードバック・モードおよびパディング方式が続く場合もあります。
変換は、次の書式で記述されます。
(後者の場合、モードおよびパディング方式には、プロバイダ固有のデフォルト値が使用されます。) たとえば、次は有効な変換です。
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
CFBやOFBなどのモードを使用すると、ブロック暗号は、暗号の実際のブロック・サイズよりも小さい単位でデータを暗号化できます。 このようなモードを要求する場合、AES/CFB8/NoPaddingおよびAES/OFB32/PKCS5Padding変換で示されるように、一度に処理するビット数を、モード名に追加することで指定することもできます。 数値を指定しない場合、プロバイダ固有のデフォルトが使用されます。 したがって、CFB8やOFB8などの8ビット・モードを使用することで、ブロック暗号をバイト指向のストリーム暗号に変換できます。
関連データ付き認証付暗号化方式(AEAD)などのモードは、機密データと暗号化されていないAdditional Associated Data (AAD)の両方に信頼性の証明を提供します。 (AEADおよびGCMやCCMなどのAEADアルゴリズムの詳細については、RFC 5116を参照してください。) 機密データとAADデータは、どちらも認証タグを計算するときに使用できます(Macに似ています)。 このタグは暗号化の際に暗号テキストに追加され、復号化の際に検証されます。
GCMやCCMなどのAEADモードは、暗号テキストの信頼性計算を開始する前にAADの信頼性計算をすべて実行します。 実装の際に暗号テキストを内部にバッファしなくてすむようにするには、暗号テキストの処理(updateおよびdoFinalメソッドを使用) よりも前にGCMまたはCCMの実装にすべてのAADデータを供給(updateAADメソッドを使用)する必要があります。
GCMモードでは、ある特定のキーによる暗号化に使用されるIVは一意でなければならないという要件があります。 GCM暗号化にIVを繰り返し使用すると、偽造攻撃の対象になります。 したがって、GCMモードを使用して暗号化処理を行ったたびに、呼出し元は異なるIV値を持つGCMパラメータで暗号オブジェクトを再初期化するようにしてください。
GCMParameterSpec s = ...;
cipher.init(..., s);
// If the GCM parameters were generated by the provider, it can
// be retrieved by:
// cipher.getParameters().getParameterSpec(GCMParameterSpec.class);
cipher.updateAAD(...); // AAD
cipher.update(...); // Multi-part update
cipher.doFinal(...); // conclusion of operation
// Use a different IV value for every encryption
byte[] newIv = ...;
s = new GCMParameterSpec(s.getTLen(), newIv);
cipher.init(..., s);
...
Javaプラットフォームの実装は、すべて次の標準のCipher変換とカッコ内のキー・サイズをサポートする必要があります。
AES/CBC/NoPadding (128)AES/CBC/PKCS5Padding (128)AES/ECB/NoPadding (128)AES/ECB/PKCS5Padding (128)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)KeyGenerator, SecretKey| 修飾子と型 | フィールド | 説明 |
|---|---|---|
static int |
DECRYPT_MODE |
暗号を復号化モードに初期化するのに使用する定数です。
|
static int |
ENCRYPT_MODE |
暗号を暗号化モードに初期化するのに使用する定数です。
|
static int |
PRIVATE_KEY |
ラップ解除されるキーが「非公開キー」であることを示すのに使用する定数です。
|
static int |
PUBLIC_KEY |
ラップ解除されるキーが「公開キー」であることを示すのに使用する定数です。
|
static int |
SECRET_KEY |
ラップ解除されるキーが「秘密キー」であることを示すのに使用する定数です。
|
static int |
UNWRAP_MODE |
暗号をキー・ラッピング解除モードに初期化するのに使用する定数です。
|
static int |
WRAP_MODE |
暗号をキー・ラッピング・モードに初期化するのに使用する定数です。
|
| 修飾子 | コンストラクタ | 説明 |
|---|---|---|
protected |
Cipher(CipherSpi cipherSpi, Provider provider, String transformation) |
Cipherオブジェクトを生成します。
|
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
byte[] |
doFinal() |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。
|
byte[] |
doFinal(byte[] input) |
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
int |
doFinal(byte[] output, int outputOffset) |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を終了します。
|
byte[] |
doFinal(byte[] input, int inputOffset, int inputLen) |
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
int |
doFinal(byte[] input, int inputOffset, int inputLen, byte[] output) |
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
int |
doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) |
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
int |
doFinal(ByteBuffer input, ByteBuffer output) |
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
String |
getAlgorithm() |
この
Cipherオブジェクトのアルゴリズム名を返します。 |
int |
getBlockSize() |
ブロック・サイズを返します(バイト単位)。
|
ExemptionMechanism |
getExemptionMechanism() |
この暗号で使用される除外メカニズム・オブジェクトを返します。
|
static Cipher |
getInstance(String transformation) |
指定された変換を実装する
Cipherオブジェクトを返します。 |
static Cipher |
getInstance(String transformation, Provider provider) |
指定された変換を実装する
Cipherオブジェクトを返します。 |
static Cipher |
getInstance(String transformation, String provider) |
指定された変換を実装する
Cipherオブジェクトを返します。 |
byte[] |
getIV() |
新しいバッファの初期化ベクトル(IV)を返します。
|
static int |
getMaxAllowedKeyLength(String transformation) |
インストールされているJCE管轄ポリシー・ファイルに従って、指定された変換のキーの最大長を返します。
|
static AlgorithmParameterSpec |
getMaxAllowedParameterSpec(String transformation) |
管轄ポリシー・ファイルに従って、最大の暗号パラメータ値を含むAlgorithmParameterSpecオブジェクトを返します。
|
int |
getOutputSize(int inputLen) |
入力の長さ
inputLen (バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。 |
AlgorithmParameters |
getParameters() |
この暗号で使用されるパラメータを返します。
|
Provider |
getProvider() |
この
Cipherオブジェクトのプロバイダを返します。 |
void |
init(int opmode, Certificate certificate) |
この暗号を、検証操作のために指定された公開キーで初期化します。
|
void |
init(int opmode, Certificate certificate, SecureRandom random) |
この暗号を、検証操作のために指定された公開キーおよび乱数発生の元を使って初期化します。
|
void |
init(int opmode, Key key) |
キーを使用してこの暗号を初期化します。
|
void |
init(int opmode, Key key, AlgorithmParameters params) |
キーとアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。
|
void |
init(int opmode, Key key, AlgorithmParameterSpec params) |
キーとアルゴリズム・パラメータのセットを使用してこの暗号を初期化します。
|
void |
init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) |
キー、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
|
void |
init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) |
キー、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
|
void |
init(int opmode, Key key, SecureRandom random) |
キーと乱数発生の元を使用してこの暗号を初期化します。
|
Key |
unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) |
前にラップされたキーをラップ解除します。
|
byte[] |
update(byte[] input) |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
byte[] |
update(byte[] input, int inputOffset, int inputLen) |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
int |
update(byte[] input, int inputOffset, int inputLen, byte[] output) |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
int |
update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
int |
update(ByteBuffer input, ByteBuffer output) |
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
void |
updateAAD(byte[] src) |
AAD (Additional Authentication Data)のマルチパート更新を継続します。
|
void |
updateAAD(byte[] src, int offset, int len) |
提供されたバッファのサブセットを使用して、Additional Authentication Data (AAD)のマルチパート更新を続行します。
|
void |
updateAAD(ByteBuffer src) |
AAD (Additional Authentication Data)のマルチパート更新を継続します。
|
byte[] |
wrap(Key key) |
キーをラップします。
|
public static final int ENCRYPT_MODE
public static final int DECRYPT_MODE
public static final int WRAP_MODE
public static final int UNWRAP_MODE
public static final int PUBLIC_KEY
public static final int PRIVATE_KEY
public static final int SECRET_KEY
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipherオブジェクトを返します。
このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。
transformation - 変換の名前(たとえば、AES/CBC/PKCS5Padding)。 標準の変換名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのCipherのセクションを参照。 NoSuchAlgorithmException - transformationがnull、空、または無効な形式の場合。あるいは、指定されたアルゴリズムのCipherSpi実装をサポートするプロバイダが存在しない場合。NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている場合。Providerpublic static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Cipherオブジェクトを返します。
指定されたプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。
transformation - 変換の名前(たとえば、AES/CBC/PKCS5Padding)。 標準の変換名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのCipherのセクションを参照。 provider - プロバイダ名NoSuchAlgorithmException - transformationがnull、空、または無効な形式の場合。あるいは、指定されたアルゴリズムのCipherSpi実装が、指定されたプロバイダから使用できない場合。NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている場合。IllegalArgumentException - providerがnullまたは空の場合Providerpublic static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipherオブジェクトを返します。
指定されたProviderオブジェクトからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
transformation - 変換の名前(たとえば、AES/CBC/PKCS5Padding)。 標準の変換名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのCipherのセクションを参照。 provider - プロバイダNoSuchAlgorithmException - transformationがnull、空、または無効な形式の場合。あるいは、指定されたアルゴリズムのCipherSpi実装が、指定されたProviderオブジェクトから使用できない場合。NoSuchPaddingException - 使用できないパディング方式がtransformationに含まれている場合。IllegalArgumentException - providerがnullの場合Providerpublic final Provider getProvider()
Cipherオブジェクトのプロバイダを返します。Cipherオブジェクトのプロバイダpublic final String getAlgorithm()
Cipherオブジェクトのアルゴリズム名を返します。
これは、このCipherオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。
Cipherオブジェクトのアルゴリズム名。public final int getBlockSize()
public final int getOutputSize(int inputLen)
inputLen (バイト単位)を指定して、次のupdateまたはdoFinal操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。
この呼出しでは、以前のupdate呼出しの処理されていない(バッファにある)データを考慮し、パディングおよびAEADタグ付けを行います。
次のupdateまたはdoFinal呼出しの実際の出力長は、このメソッドが返す長さより小さいことがあります。
inputLen - 入力長(バイト単位)IllegalStateException - この暗号が誤った状態にある場合(まだ初期化されていないなど)public final byte[] getIV()
これは、ランダムIVが作成された場合、あるいはIVがユーザー指定のパスワードから派生するパスワードベースの暗号化または復号化のコンテキストにおいて役立ちます。
public final AlgorithmParameters getParameters()
返されるパラメータは、この暗号を初期化するのに使用したものと同じ場合があります。または、返されるパラメータには、この暗号にアルゴリズム・パラメータが必要で、かつアルゴリズム・パラメータで初期化されなかった場合に、基本となる暗号実装で使用されるデフォルトとランダムのパラメータ値の組み合わせが含まれることもあります。
public final ExemptionMechanism getExemptionMechanism()
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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。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 - (@code opmode}がWRAP_MODEまたはUNWRAP_MODEであるが、基本となるCipherSpiでそのモードが実装されていない場合。public final byte[] update(byte[] input)
inputバッファ内のバイトが処理され、結果が新しいバッファに格納されます。
inputの長さがゼロの場合、このメソッドはnullを返します。
input - 入力バッファIllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)public final byte[] update(byte[] input,
int inputOffset,
int inputLen)
inputOffsetから始まる、inputバッファ内の最初のinputLenバイトが処理され、結果が新しいバッファに格納されます。
inputLenがゼロの場合、このメソッドはnullを返します。
input - 入力バッファinputOffset - 入力を開始するinput内のオフセットinputLen - 入力長IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)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 - 指定された出力バッファが小さすぎて結果を保持できない場合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 - 指定された出力バッファが小さすぎて結果を保持できない場合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 - 出力ByteBufferoutputに格納されたバイト数IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)IllegalArgumentException - 入力と出力が同じオブジェクトである場合ReadOnlyBufferException - 出力バッファが読取り専用の場合ShortBufferException - 出力バッファ内に残っている容量が不足している場合public final byte[] doFinal()
throws IllegalBlockSizeException,
BadPaddingException
入力データは前のupdate操作中にバッファに入れられて、パディング(要求された場合)が適用されている場合があります。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は新しいバッファに格納されます。
終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。
ノート: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。
IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。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など)で復号化し、受け取った認証タグが計算された値と一致しない場合。public final byte[] doFinal(byte[] input)
throws IllegalBlockSizeException,
BadPaddingException
inputバッファ内のバイト、および前のupdate操作中にバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。 GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。 結果は新しいバッファに格納されます。
終了時に、このメソッドはこの暗号オブジェクトを前にinitを呼び出して初期化されたときの状態にリセットします。 つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(initの呼出しで指定された操作モードにより異なります)。
ノート: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。
input - 入力バッファIllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。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など)で復号化し、受け取った認証タグが計算された値と一致しない場合。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など)で復号化し、受け取った認証タグが計算された値と一致しない場合。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など)で復号化し、受け取った認証タグが計算された値と一致しない場合。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 - 出力ByteBufferoutputに格納されたバイト数IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)IllegalArgumentException - 入力と出力が同じオブジェクトである場合ReadOnlyBufferException - 出力バッファが読取り専用の場合IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。ShortBufferException - 出力バッファ内に残っている容量が不足している場合BadPaddingException - この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。AEADBadTagException - この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。public final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
key - ラップされるキー。IllegalStateException - この暗号が誤った状態にある場合(初期化されていないなど)。IllegalBlockSizeException - この暗号がブロック暗号であり、パディングが要求されておらず、ラップされるキーのエンコーディングの長さがブロック・サイズの倍数でない場合。InvalidKeyException - この暗号を使用してキーをラップすることが不可能か安全でない場合(ハードウェア保護されたキーがソフトウェアだけの暗号に渡される場合など)。UnsupportedOperationException - CipherSpi内の対応するメソッドがサポートされていない場合。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内の対応するメソッドがサポートされていない場合。public static final int getMaxAllowedKeyLength(String transformation) throws NoSuchAlgorithmException
transformation - 暗号変換。NullPointerException - transformationがnullである場合。NoSuchAlgorithmException - transformationが有効な変換でない場合。すなわち、「algorithm」または「algorithm/mode/padding」の形式でない場合。public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
transformation - 暗号変換。NullPointerException - transformationがnullである場合。NoSuchAlgorithmException - transformationが有効な変換でない場合。すなわち、「algorithm」または「algorithm/mode/padding」の形式でない場合。public final void updateAAD(byte[] src)
暗号がAEAD (GCM/CCM)などのモードで操作されると、このメソッドの呼出しでAADが提供されます。 この暗号がGCMまたはCCMモードで操作されている場合は、(updateおよびdoFinalメソッドを介した)暗号テキスト上の操作を開始する前に、すべてのAADが提供される必要があります。
src - Additional Authentication Dataを格納するバッファIllegalArgumentException - srcバイト配列がnullである場合IllegalStateException - この暗号が誤った状態であり(まだ初期化されていないなど)、AADを受け入れない場合、またはGCMまたはCCMモードで操作していて、アクティブな暗号化/復号化操作に対してすでにupdateメソッドが呼び出されている場合UnsupportedOperationException - CipherSpi内の対応するメソッドが実装によってオーバーライドされていない場合public final void updateAAD(byte[] src,
int offset,
int len)
暗号が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内の対応するメソッドが実装によってオーバーライドされていない場合public final void updateAAD(ByteBuffer src)
暗号が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内の対応するメソッドが実装によってオーバーライドされていない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。