|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.rim.device.api.crypto.TripleDESCBCEncryptorEngine
public final class TripleDESCBCEncryptorEngine
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.
TripleDESCBCDecryptorEngine
,
CBCDecryptorEngine
,
TripleDESDecryptorEngine
,
TripleDESKey
Field Summary | ||
---|---|---|
|
static int |
BLOCK_LENGTH
Represents the block length in bytes for the algorithm, namely 8 bytes. |
Constructor Summary | ||
---|---|---|
|
TripleDESCBCEncryptorEngine(TripleDESKey key,
InitializationVector iv)
Creates a TripleDESCBCEncryptorEngine object based upon a TripleDES key as input, and initializes
this key for use with the algorithm. |
Method Summary | ||
---|---|---|
|
void |
encrypt(byte[] plaintext,
int plaintextOffset,
byte[] ciphertext,
int ciphertextOffset)
Encrypts a block of the given plaintext into a block of ciphertext. |
|
void |
encrypt(byte[] plaintext,
int plaintextOffset,
byte[] ciphertext,
int ciphertextOffset,
int numBlocks)
Encrypts a series of blocks of the given plaintext into a series of blocks of ciphertext. |
|
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 encrypting data. |
|
InitializationVector |
getIV()
Returns the initialization vector associated with this encryptor engine. |
|
void |
setIV(InitializationVector iv)
Sets the initialization vector associated with this encryptor 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 TripleDESCBCEncryptorEngine(TripleDESKey key, InitializationVector iv) throws CryptoTokenException, CryptoUnsupportedOperationException
TripleDESCBCEncryptorEngine
object based upon a TripleDES key as input, and initializes
this key for use with the algorithm.
key
- The TripleDESKey
object to use for encryption.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 BlockEncryptorEngine
public void setIV(InitializationVector iv)
iv
- An initialization vector used for seeding the engine.TripleDESCBCEncryptorEngine.getIV()
public InitializationVector getIV()
TripleDESCBCEncryptorEngine.setIV(net.rim.device.api.crypto.InitializationVector)
public int getBlockLength()
getBlockLength
in interface BlockEncryptorEngine
public void encrypt(byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset) throws CryptoTokenException
BlockEncryptorEngine
encrypt
in interface BlockEncryptorEngine
plaintext
- A byte array containing the input that is to be encrypted.plaintextOffset
- The starting offset, or initial byte position, of
the data within the input array.ciphertext
- A byte array to hold the ciphertext output from the method.ciphertextOffset
- The starting offset, or initial byte position, of
the data within the output array.
CryptoTokenException
- Thrown when an problem occurs with the
crypto token or the crypto token is invalid.public void encrypt(byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset, int numBlocks) throws CryptoTokenException
BlockEncryptorEngineExt
encrypt
in interface BlockEncryptorEngineExt
plaintext
- A byte array containing the input that is to be encrypted.plaintextOffset
- The starting offset, or initial byte position, of
the data within the input array.ciphertext
- A byte array to hold the ciphertext output from the method.ciphertextOffset
- The starting offset, or initial byte position, of
the data within the output array.numBlocks
- The number of blocks to encrypt.
CryptoTokenException
- Thrown when an problem 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.