public final class RSApkcs1 extends Cipher
encrypt(byte[])
and decrypt(byte[])
.
RSApkcs1
relies on the RSA
class to perform the raw encryption/decryption operation.
For greater security, it is considered a good practice to use a given key pair with only one encryption scheme, and use a different key pair if a second scheme is to be used in a different situation.
OAEPAlgorithmIdentifier
, RSA
Constructor and Description |
---|
RSApkcs1()
Creates an uninitialized RSApkcs1 instance.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
algName()
Returns the encryption scheme as a string.
|
byte[] |
decrypt(byte[] input, int inOff, int len, boolean unpad)
Decrypts a sequence of bytes of specified length.
|
void |
decrypt(byte[] input, int inOff, int len, byte[] output, int outOff)
Decrypts a sequence of bytes of specified length and places the original plaintext message in the given output buffer starting at the given offset.
|
byte[] |
encrypt(byte[] input, int inOff, int len, boolean pad)
Encrypts a sequence of bytes of specified length.
|
void |
encrypt(byte[] input, int inOff, int len, byte[] output, int outOff)
Encrypts a sequence of bytes of specified length and places the resulting ciphertext in the given output buffer starting at the given offset.
|
void |
erase()
Erases any sensitive information (such as buffers and subkey tables) stored in this cipher object.
|
AlgorithmIdentifier |
getAlgID()
Builds an AlgorithmIdentifier that is a "snapshot" of the Cipher's current configuration.
|
int |
getBlockSize()
Returns 0, because this is not a block cipher.
|
void |
initialize(AlgorithmIdentifier algID, Key key, RandomBitsSource rbs)
This method initializes the cipher with the given AlgorithmIdentifier and then configures itself with the given key and RandomBitsSource.
|
PrivateKey |
unwrapPrivateKey(byte[] key)
Always throws a CipherException -- cannot unwrap a private key using this cipher.
|
SymmetricKey |
unwrapSymmetricKey(byte[] encKey, AlgorithmIdentifier algID)
Unwraps a symmetric key using this cipher.
|
byte[] |
wrapKey(PrivateKey key)
Always throws a CipherException -- cannot wrap a private key using this cipher.
|
byte[] |
wrapKey(SymmetricKey key)
Wraps a symmetric key using this cipher.
|
assertDecryption, assertEncryption, assertKeyUnwrap, assertKeyWrap, cloneKey, decodeOp, decrypt, decrypt, decrypt, encodeOp, encrypt, encrypt, encrypt, finalize, getInstance, getInstance, getInstance, getInstance, getInstance, getInstance, getIV, getMode, getPaddingID, initialize, initialize, initialize, releaseOp
public RSApkcs1()
By default, the encoding method is PKCS #1 v1.5 for backwards compatability.
public void initialize(AlgorithmIdentifier algID, Key key, RandomBitsSource rbs) throws AlgorithmIdentifierException, InvalidKeyException
initialize
in class Cipher
algID
- The AlgorithmIdentifier whose params will be used to configure the cipher.key
- The Key instance that will be used by the cipher internally.rbs
- The RandomBitsSource that the Cipher uses during encryption operations. If null is provided, the Cipher will call RandomBitsSource.getDefault()
when it is required.AlgorithmIdentifierException
- If the algID's OID isn't valid for the Cipher instance being initialized or if the params are not valid for the algID's OID.InvalidKeyException
- If there is a problem with the Key instance the Cipher is being initialized with.public byte[] decrypt(byte[] input, int inOff, int len, boolean unpad) throws CipherException
decrypt
in class Cipher
input
- Buffer in which data to be decrypted is stored.inOff
- Offset within buffer of the start of data.len
- The length of the data.unpad
- Ignored because encoding data is not optional in RSA Encryption.CipherException
- If cipher not initialized, data is not a multiple of the block size and no padding is specified, etc.public void decrypt(byte[] input, int inOff, int len, byte[] output, int outOff) throws CipherException
decrypt
in class Cipher
input
- Array of bytes to decrypt.inOff
- Offset of the start of the data to decrypt.len
- The length of the data to decrypt.output
- Array to place the decrypted bytes.outOff
- Offset of the start of the decrypted bytes.CipherException
- If there is a problem with the decryption process or if the cipher was not initialized for decryption.public byte[] encrypt(byte[] input, int inOff, int len, boolean pad) throws CipherException
encrypt
in class Cipher
input
- Buffer in which data to be encrypted is stored.inOff
- Offset within buffer of the start of the data.len
- The length of the data.pad
- Ignored because encoding data is not optional in RSA Encryption.CipherException
- If cipher not initialized, data is not a multiple of the block size and no padding is specified, etc.public void encrypt(byte[] input, int inOff, int len, byte[] output, int outOff) throws CipherException
encrypt
in class Cipher
input
- Array of bytes to encrypt.inOff
- Offset of the start of data to encrypt.len
- The length of the data to encrypt.output
- Array to place the encrypted bytes.outOff
- Offset of the start of the encrypted bytes.CipherException
- If there are problems with the encryption operation or if the Cipher was not initialized for encryption.public byte[] wrapKey(PrivateKey key) throws CipherException
wrapKey
in class Cipher
key
- The private key to wrap.CipherException
- If the Cipher was not initialized, if the Cipher was used for wrapping without being re-initialized or if an error occurred during the wrapping process.public byte[] wrapKey(SymmetricKey key) throws CipherException
wrapKey
in class Cipher
key
- The symmetric key to wrap.CipherException
- If the Cipher was not initialized, if the Cipher was used for wrapping without being re-initialized or if an error occurred during the wrapping process.public PrivateKey unwrapPrivateKey(byte[] key) throws CipherException
unwrapPrivateKey
in class Cipher
key
- The encrypted key.CipherException
- If the Cipher was not initialized, if the Cipher was used for unwrapping without being re-initialized or if an error occurred during the decryption process.public SymmetricKey unwrapSymmetricKey(byte[] encKey, AlgorithmIdentifier algID) throws CipherException
unwrapSymmetricKey
in class Cipher
encKey
- The encrypted key.algID
- The algorithm identifier of the wrapped symmetric key.CipherException
- If the Cipher was not initialized, if the Cipher was used for unwrapping without being re-initialized or if an error occurred during the encryption process.public AlgorithmIdentifier getAlgID()
Altering this AlgorithmIdentifier will have no effect on the state of the Cipher.
public java.lang.String algName()
public int getBlockSize()
getBlockSize
in class Cipher