|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.rim.device.api.crypto.TripleDESCBCDecryptorEngine
public final class TripleDESCBCDecryptorEngine
Implements the raw functionality of the TripleDES algorithm.
The TripleDES algorithm proposed by NIST utilizes the standard DES algorithm in an alternating encryption then decryption operation. That is, EDE (Encryption/Decryption/Encryption) performing three DES operations and hence its name. This cipher is also commonly referred to as the DESede cipher.
Our implementation provides two types of TripleDES. Namely, two key and three key TripleDES. That is, two key TripleDES uses two different keys -- one for the encryption operations and one for the decryption operation. Three key TripleDES uses a different key for each operation.
The key length is 128 bits or 192 bits depending on whether you are using two key or three key TripleDES. Note that the effective key length is actually 112 bits or 168 bits after removing the parity bits from the DES operations. The block size is 64 bits.
If possible, three key TripleDES should be used instead of two key TripleDES due to the larger keysize and specific attacks against two key TripleDES.
We implemented TripleDES as it's defined in NIST's FIPS 46-3.
This decryptor engine implements the CBC mode of operation as well.
TripleDESCBCEncryptorEngine
,
CBCDecryptorEngine
,
TripleDESDecryptorEngine
,
TripleDESKey
Field Summary | ||
---|---|---|
|
static int |
BLOCK_LENGTH
Represents the block length in bytes for the algorithm, namely 8 bytes. |
Constructor Summary | ||
---|---|---|
|
TripleDESCBCDecryptorEngine(TripleDESKey key,
InitializationVector iv)
Creates a TripleDESDecryptorEngine object based upon a TripleDES key as input, and initializes
this key for use with the algorithm. |
Method Summary | ||
---|---|---|
|
void |
decrypt(byte[] ciphertext,
int ciphertextOffset,
byte[] plaintext,
int plaintextOffset)
Decrypts the data given a byte array containing the ciphertext, a byte array to hold the plaintext, and their associated offsets. |
|
void |
decrypt(byte[] ciphertext,
int ciphertextOffset,
byte[] plaintext,
int plaintextOffset,
int numBlocks)
Decodes a series of blocks of the given ciphertext into a series of blocks of plaintext. |
|
String |
getAlgorithm()
Returns the name of the algorithm along with the mode, eg "TripleDES/CBC" |
|
int |
getBlockLength()
Returns the block length that the engine uses when Decrypting data. |
|
InitializationVector |
getIV()
Returns the initialization vector associated with this decryptor engine. |
|
void |
setIV(InitializationVector iv)
Sets the initialization vector associated with this decryptor engine. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int BLOCK_LENGTH
Constructor Detail |
---|
public TripleDESCBCDecryptorEngine(TripleDESKey key, InitializationVector iv) throws CryptoTokenException, CryptoUnsupportedOperationException
TripleDESDecryptorEngine
object based upon a TripleDES key as input, and initializes
this key for use with the algorithm.
key
- The TripleDESKey
object to use for decryption.iv
- An initialization vector used for seeding the engine.
CryptoTokenException
- Thrown when a problem occurs with a crypto token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to an unsupported operation.Method Detail |
---|
public String getAlgorithm()
getAlgorithm
in interface BlockDecryptorEngine
public void setIV(InitializationVector iv)
iv
- An initialization vector used for seeding the engine.TripleDESCBCDecryptorEngine.getIV()
public InitializationVector getIV()
TripleDESCBCDecryptorEngine.setIV(net.rim.device.api.crypto.InitializationVector)
public int getBlockLength()
getBlockLength
in interface BlockDecryptorEngine
public void decrypt(byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset) throws CryptoTokenException
decrypt
in interface BlockDecryptorEngine
ciphertext
- The byte array that contains the ciphertext.ciphertextOffset
- The offset, or position of the first bit, of the data.plaintext
- The byte array that contains the plaintext.plaintextOffset
- The offset, or position of the first bit, of the plaintext.
CryptoTokenException
- Thrown when a problem occurs with a crypto
token or the crypto token is invalid.public void decrypt(byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset, int numBlocks) throws CryptoTokenException
BlockDecryptorEngineExt
decrypt
in interface BlockDecryptorEngineExt
ciphertext
- A byte array containing the input that is to be decrypted.ciphertextOffset
- The starting offset, or initial byte position, of the data within the input array.plaintext
- A byte array containing the output from the method.plaintextOffset
- The starting offset, or initial byte position, of
the data within the output array.numBlocks
- The number of blocks to decrypt.
CryptoTokenException
- Thrown when an error occurs with the crypto
token or the crypto token is invalid.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright 1999-2010 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Copyright 1993-2003 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.
Copyright 2002-2003 Nokia Corporation All Rights Reserved.
Java is a trademark of Sun Microsystems, Inc.