Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
javax.crypto.Cipher
getInstance
must be used to instantiate a given
transformation, optionally with a specific provider.
A transformation is of the form:
Cipher c =
Cipher.getInstance("AES/CBC/PKCS5Padding");
Finally, when requesting a block cipher in stream cipher mode
(such as AES
in OFB or CFB mode) the number of bits to be processed
at a time may be specified by appending it to the name of the mode;
e.g. "AES/OFB8/NoPadding"
. If no such number is
specified a provider-specific default value is used.
java.security.KeyGenerator
, SecretKey
Field Summary | |
static int |
|
static int |
|
static int |
|
static int |
|
static int |
|
static int |
|
static int |
|
Constructor Summary | |
Method Summary | |
byte[] |
|
byte[] |
|
int |
|
byte[] |
|
int |
|
int |
|
int |
|
String |
|
int |
|
ExemptionMechanism |
|
byte[] |
|
static Cipher |
|
static Cipher |
|
static Cipher |
|
int |
|
AlgorithmParameters |
|
Provider |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
Key | |
byte[] |
|
byte[] |
|
int |
|
int |
|
int |
|
byte[] |
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public static final int PRIVATE_KEY
Constant for when the key to be unwrapped is a private key.
- Field Value:
- 2
public static final int PUBLIC_KEY
Constant for when the key to be unwrapped is a public key.
- Field Value:
- 1
public static final int SECRET_KEY
Constant for when the key to be unwrapped is a secret key.
- Field Value:
- 3
public final byte[] doFinal() throws IllegalStateException, IllegalBlockSizeException, BadPaddingException
Finishes a multi-part transformation, and returns the final transformed bytes.
- Returns:
- The final transformed bytes.
- Throws:
IllegalStateException
- If this instance has not been initialized, or if a doFinal call has already been made.IllegalBlockSizeException
- If this instance has no padding and the input is not a multiple of this cipher's block size.BadPaddingException
- If this instance is decrypting and the padding bytes do not match this instance's padding scheme.
public final byte[] doFinal(byte[] input) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException
Finishes a multi-part transformation or does an entire transformation on the input, and returns the transformed bytes.
- Parameters:
input
- The final input bytes.
- Returns:
- The final transformed bytes.
- Throws:
IllegalStateException
- If this instance has not been initialized, or if a doFinal call has already been made.IllegalBlockSizeException
- If this instance has no padding and the input is not a multiple of this cipher's block size.BadPaddingException
- If this instance is decrypting and the padding bytes do not match this instance's padding scheme.
public final int doFinal(byte[] output, int outputOffset) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, ShortBufferException
Finishes a multi-part transformation and stores the transformed bytes into the given array.
- Parameters:
output
- The destination for the transformed bytes.outputOffset
- The offset in output to start storing bytes.
- Returns:
- The number of bytes placed into the output array.
- Throws:
IllegalStateException
- If this instance has not been initialized, or if a doFinal call has already been made.IllegalBlockSizeException
- If this instance has no padding and the input is not a multiple of this cipher's block size.BadPaddingException
- If this instance is decrypting and the padding bytes do not match this instance's padding scheme.ShortBufferException
- If the output array is not large enough to hold the transformed bytes.
public final byte[] doFinal(byte[] input, int inputOffset, int inputLength) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException
Finishes a multi-part transformation or does an entire transformation on the input, and returns the transformed bytes.
- Parameters:
input
- The final input bytes.inputOffset
- The index in the input bytes to start.inputLength
- The number of bytes to read from the input.
- Returns:
- The final transformed bytes.
- Throws:
IllegalStateException
- If this instance has not been initialized, or if a doFinal call has already been made.IllegalBlockSizeException
- If this instance has no padding and the input is not a multiple of this cipher's block size.BadPaddingException
- If this instance is decrypting and the padding bytes do not match this instance's padding scheme.
public final int doFinal(byte[] input, int inputOffset, int inputLength, byte[] output) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, ShortBufferException
public final int doFinal(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, ShortBufferException
Finishes a multi-part transformation or transforms a portion of a byte array, and stores the result in the given byte array.
- Parameters:
input
- The input bytes.inputOffset
- The index in input to start.inputLength
- The number of bytes to transform.output
- The output buffer.outputOffset
- The index in output to start.
- Returns:
- The number of bytes placed into the output array.
- Throws:
IllegalStateException
- If this instance has not been initialized, or if a doFinal call has already been made.IllegalBlockSizeException
- If this instance has no padding and the input is not a multiple of this cipher's block size.BadPaddingException
- If this instance is decrypting and the padding bytes do not match this instance's padding scheme.ShortBufferException
- If the output array is not large enough to hold the transformed bytes.
public final int doFinal(ByteBuffer input, ByteBuffer output) throws ReadOnlyBufferException, ShortBufferException, BadPaddingException, IllegalBlockSizeException
Finishes a multi-part transformation with, or completely transforms, a byte buffer, and stores the result into the output buffer.
- Parameters:
input
- The input buffer.output
- The output buffer.
- Returns:
- The number of bytes stored into the output buffer.
- Throws:
IllegalArgumentException
- If the input and output buffers are the same object.IllegalStateException
- If this cipher was not initialized for encryption or decryption.ReadOnlyBufferException
- If the output buffer is not writable.IllegalBlockSizeException
- If this cipher requires a total input that is a multiple of its block size to complete this transformation.ShortBufferException
- If the output buffer is not large enough to hold the transformed bytes.BadPaddingException
- If the cipher is a block cipher with a padding scheme, and the decrypted bytes do not end with a valid padding.
- Since:
- 1.5
public final String getAlgorithm()
Get the name that this cipher instance was created with; this is equivalent to the "transformation" argument given to any of thegetInstance()
methods.
- Returns:
- The cipher name.
public final int getBlockSize()
Return the size of blocks, in bytes, that this cipher processes.
- Returns:
- The block size.
public final ExemptionMechanism getExemptionMechanism()
Return the currently-operatingExemptionMechanism
.
- Returns:
- null, currently.
public final byte[] getIV()
Return the initialization vector that this instance was initialized with.
- Returns:
- The IV.
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Creates a new cipher instance for the given transformation. The installed providers are tried in order for an implementation, and the first appropriate instance is returned. If no installed provider can provide the implementation, an appropriate exception is thrown.
- Parameters:
transformation
- The transformation to create.
- Returns:
- An appropriate cipher for this transformation.
- Throws:
NoSuchAlgorithmException
- If no installed provider can supply the appropriate cipher or mode.NoSuchPaddingException
- If no installed provider can supply the appropriate padding.
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Creates a new cipher instance for the given transformation and the named provider.
- Parameters:
transformation
- The transformation to create.provider
- The name of the provider to use.
- Returns:
- An appropriate cipher for this transformation.
- Throws:
NoSuchAlgorithmException
- If the provider cannot supply the appropriate cipher or mode.NoSuchProviderException
- If the named provider is not installed.NoSuchPaddingException
- If the provider cannot supply the appropriate padding.IllegalArgumentException
- if eithertransformation
orprovider
isnull
.
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Creates a new cipher instance for a given transformation from a given provider.
- Parameters:
transformation
- The transformation to create.provider
- The provider to use.
- Returns:
- An appropriate cipher for this transformation.
- Throws:
NoSuchAlgorithmException
- If the given provider cannot supply the appropriate cipher or mode.NoSuchPaddingException
- If the given provider cannot supply the appropriate padding scheme.
public final int getOutputSize(int inputLength) throws IllegalStateException
Returns the size an output buffer needs to be if this cipher is updated with a number of bytes.
- Parameters:
inputLength
- The input length.
- Returns:
- The output length given this input length.
- Throws:
IllegalStateException
- If this instance has not been initialized, or if a doFinal call has already been made.
public final AlgorithmParameters getParameters()
Return theAlgorithmParameters
that this instance was initialized with.
- Returns:
- The parameters.
public final void init(int opmode, Key key) throws InvalidKeyException
Initialize this cipher with the supplied key. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. If this cipher requires any random bytes (for example for an initilization vector) than theSecureRandom
with the highest priority is used as the source of these bytes. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.key
- The key.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the given key.
public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException
Initialize this cipher with the supplied key and parameters. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. If this cipher requires any random bytes (for example for an initilization vector) then theSecureRandom
with the highest priority is used as the source of these bytes. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.key
- The key.params
- The algorithm parameters to initialize this instance with.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the given key.InvalidAlgorithmParameterException
- If the supplied parameters are inappropriate for this cipher.
public final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Initialize this cipher with the supplied key, parameters, and source of randomness. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.key
- The key.params
- The algorithm parameters to initialize this instance with.random
- The source of randomness to use.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the given key.InvalidAlgorithmParameterException
- If the supplied parameters are inappropriate for this cipher.
public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Initialize this cipher with the supplied key and source of randomness. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.key
- The key.random
- The source of randomness to use.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the given key.
public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Initialize this cipher with the supplied key and parameters. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. If this cipher requires any random bytes (for example for an initilization vector) then theSecureRandom
with the highest priority is used as the source of these bytes. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.key
- The key.params
- The algorithm parameters to initialize this instance with.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the given key.InvalidAlgorithmParameterException
- If the supplied parameters are inappropriate for this cipher.
public final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Initialize this cipher with the supplied key, parameters, and source of randomness. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.key
- The key.params
- The algorithm parameters to initialize this instance with.random
- The source of randomness to use.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the given key.InvalidAlgorithmParameterException
- If the supplied parameters are inappropriate for this cipher.
public final void init(int opmode, Certificate certificate) throws InvalidKeyException
Initialize this cipher with the public key from the given certificate. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. As per the Java 1.4 specification, ifcert
is an instance of anX509Certificate
and its key usage extension field is incompatible withopmode
then anInvalidKeyException
is thrown. If this cipher requires any random bytes (for example for an initilization vector) than theSecureRandom
with the highest priority is used as the source of these bytes. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.certificate
- The certificate.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the certificate's public key, or if the public key cannot be used as described above.
public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
Initialize this cipher with the public key from the given certificate and the specified source of randomness. The cipher will be initialized for encryption, decryption, key wrapping, or key unwrapping, depending upon whether theopmode
argument isENCRYPT_MODE
,DECRYPT_MODE
,WRAP_MODE
, orUNWRAP_MODE
, respectively. As per the Java 1.4 specification, ifcert
is an instance of anX509Certificate
and its key usage extension field is incompatible withopmode
then anInvalidKeyException
is thrown. If this cipher requires any random bytes (for example for an initilization vector) than theSecureRandom
with the highest priority is used as the source of these bytes. A call to any of theinit
methods overrides the state of the instance, and is equivalent to creating a new instance and calling itsinit
method.
- Parameters:
opmode
- The operation mode to use.certificate
- The certificate.random
- The source of randomness.
- Throws:
InvalidKeyException
- If the underlying cipher instance rejects the certificate's public key, or if the public key cannot be used as described above.
public final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws IllegalStateException, InvalidKeyException, NoSuchAlgorithmException
Unwrap a previously-wrapped key.
- Parameters:
wrappedKey
- The wrapped key.wrappedKeyAlgorithm
- The algorithm with which the key was wrapped.wrappedKeyType
- The type of key (public, private, or secret) that this wrapped key respresents.
- Returns:
- The unwrapped key.
- Throws:
IllegalStateException
- If this instance has not be initialized for unwrapping.InvalidKeyException
- IfwrappedKey
is not a wrapped key, if the algorithm cannot unwrap this key, or if the unwrapped key's type differs from the specified type.NoSuchAlgorithmException
- IfwrappedKeyAlgorithm
is not a valid algorithm name.
public final byte[] update(byte[] input) throws IllegalStateException
Continue a multi-part transformation on an entire byte array, returning the transformed bytes.
- Parameters:
input
- The input bytes.
- Returns:
- The transformed bytes.
- Throws:
IllegalStateException
- If this cipher was not initialized for encryption or decryption.
public final byte[] update(byte[] input, int inputOffset, int inputLength) throws IllegalStateException
Continue a multi-part transformation on part of a byte array, returning the transformed bytes.
- Parameters:
input
- The input bytes.inputOffset
- The index in the input to start.inputLength
- The number of bytes to transform.
- Returns:
- The transformed bytes.
- Throws:
IllegalStateException
- If this cipher was not initialized for encryption or decryption.
public final int update(byte[] input, int inputOffset, int inputLength, byte[] output) throws IllegalStateException, ShortBufferException
Continue a multi-part transformation on part of a byte array, placing the transformed bytes into the given array.
- Parameters:
input
- The input bytes.inputOffset
- The index in the input to start.inputLength
- The number of bytes to transform.output
- The output byte array.
- Returns:
- The number of transformed bytes.
- Throws:
IllegalStateException
- If this cipher was not initialized for encryption or decryption.
public final int update(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) throws IllegalStateException, ShortBufferException
Continue a multi-part transformation on part of a byte array, placing the transformed bytes into the given array.
- Parameters:
input
- The input bytes.inputOffset
- The index in the input to start.inputLength
- The number of bytes to transform.output
- The output byte array.outputOffset
- The index in the output array to start.
- Returns:
- The number of transformed bytes.
- Throws:
IllegalStateException
- If this cipher was not initialized for encryption or decryption.
public final int update(ByteBuffer input, ByteBuffer output) throws ReadOnlyBufferException, ShortBufferException
Continue a multi-part transformation on a byte buffer, storing the transformed bytes into another buffer.
- Parameters:
input
- The input buffer.output
- The output buffer.
- Returns:
- The number of bytes stored in output.
- Throws:
IllegalArgumentException
- If the two buffers are the same object.IllegalStateException
- If this cipher was not initialized for encrypting or decrypting.ReadOnlyBufferException
- If the output buffer is not writable.ShortBufferException
- If the output buffer does not have enough available space for the transformed bytes.
- Since:
- 1.5
public final byte[] wrap(Key key) throws IllegalStateException, IllegalBlockSizeException, InvalidKeyException
Wrap a key.
- Parameters:
key
- The key to wrap.
- Returns:
- The wrapped key.
- Throws:
IllegalStateException
- If this instance was not initialized for key wrapping.IllegalBlockSizeException
- If this instance has no padding and the key is not a multiple of the block size.InvalidKeyException
- If this instance cannot wrap this key.