public class Cipher extends Object
Cipherオブジェクトを生成するには、アプリケーションはCipherのgetInstance
メソッドを呼び出して、要求された変換の名前を渡します。必要に応じて、プロバイダの名前を指定できます。
変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。変換には、暗号化アルゴリズム(DES など)の名前が必ず含まれます。それにフィードバック・モードおよびパディング方式が続く場合もあります。
変換は、次の書式で記述されます。
後者の場合、モードおよびパディング方式には、プロバイダ固有のデフォルト値が使用されます。たとえば、次は有効な変換です。
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
CFB
やOFB
などのモードを使用すると、ブロック暗号は、暗号の実際のブロック・サイズよりも小さい単位でデータを暗号化できます。このようなモードを要求する場合、「DES/CFB8/NoPadding
」および「DES/OFB32/PKCS5Padding
」変換に示されるように、この数値をモード名に追加することにより、一度に処理するビット数をオプションで指定できます。数値を指定しない場合、プロバイダ固有のデフォルトが使用されます。(たとえば、SunJCEプロバイダではDESにデフォルトの64ビットが使用されます。)したがって、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
変換とカッコ内の鍵サイズをサポートする必要があります。
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
- 変換の名前(たとえば、DES/CBC/PKCS5Padding)。標準の変換名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのCipherのセクションを参照。NoSuchAlgorithmException
- transformation
がnull、空、または無効な形式の場合。あるいは、指定されたアルゴリズムのCipherSpi実装をサポートするプロバイダが存在しない場合。NoSuchPaddingException
- 使用できないパディング方式がtransformation
に含まれている場合。Provider
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Cipher
オブジェクトを返します。
指定されたプロバイダからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
transformation
- 変換の名前(たとえば、DES/CBC/PKCS5Padding)。標準の変換名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのCipherのセクションを参照。provider
- プロバイダ名NoSuchAlgorithmException
- transformation
がnull、空、または無効な形式の場合。あるいは、指定されたアルゴリズムのCipherSpi実装が、指定されたプロバイダから使用できない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NoSuchPaddingException
- 使用できないパディング方式がtransformation
に含まれている場合。IllegalArgumentException
- provider
がnullまたは空の場合Provider
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher
オブジェクトを返します。
指定されたProviderオブジェクトからのCipherSpi実装をカプセル化する新しいCipherオブジェクトが返されます。指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
transformation
- 変換の名前(たとえば、DES/CBC/PKCS5Padding)。標準の変換名については、Java暗号化アーキテクチャ標準アルゴリズム名のドキュメントのCipherのセクションを参照。provider
- プロバイダNoSuchAlgorithmException
- transformation
がnull、空、または無効な形式の場合。あるいは、指定されたアルゴリズムのCipherSpi実装が、指定されたProviderオブジェクトから使用できない場合。NoSuchPaddingException
- 使用できないパディング方式がtransformation
に含まれている場合。IllegalArgumentException
- provider
がnullの場合Provider
public 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, 2014, Oracle and/or its affiliates. All rights reserved.