SHOW Signed
 

net.rim.device.api.crypto
Class TripleDESEncryptorEngine

java.lang.Object
  |
  +--net.rim.device.api.crypto.TripleDESEncryptorEngine
All Implemented Interfaces:
BlockEncryptorEngine, SymmetricKeyEncryptorEngine

public final class TripleDESEncryptorEngine
extends Object
implements SymmetricKeyEncryptorEngine

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.

For a code sample using the Triple DES encryptor engine, click here.

For information on cryptographic algorithms, see Crypto Algorithms.

Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

Since:
JDE 3.6.0
See Also:
TripleDESDecryptorEngine, TripleDESKey

Field Summary
 Category: Signed static int BLOCK_LENGTH
          The block length, in bytes, for the algorithm, namely 8 bytes.
 
Constructor Summary
 Category: Signed TripleDESEncryptorEngine(TripleDESKey key)
          Creates a TripleDESEncryptorEngine object based upon a TripleDES key as input, and initializes this key for use with the algorithm.
 
Method Summary
 Category: Signed  void encrypt(byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset)
          Encrypts a block of the given plaintext into a block of ciphertext.
 Category: Signed  String getAlgorithm()
          Returns the name of the algorithm used, ie "TripleDES".
 Category: Signed  int getBlockLength()
          Returns the block length of the engine in bytes.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BLOCK_LENGTH

public static final int BLOCK_LENGTH
The block length, in bytes, for the algorithm, namely 8 bytes.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Constructor Detail

TripleDESEncryptorEngine

public TripleDESEncryptorEngine(TripleDESKey key)
                         throws CryptoTokenException,
                                CryptoUnsupportedOperationException
Creates a TripleDESEncryptorEngine object based upon a TripleDES key as input, and initializes this key for use with the algorithm.

Parameters:
key - The TripleDESKey object to use for encryption.
Throws:
CryptoTokenException - Thrown when a problem occurs with the crypto token, or the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown when a call is made to an unsupported operation.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Method Detail

encrypt

public void encrypt(byte[] plaintext,
                    int plaintextOffset,
                    byte[] ciphertext,
                    int ciphertextOffset)
             throws CryptoTokenException
Description copied from interface: BlockEncryptorEngine
Encrypts a block of the given plaintext into a block of ciphertext.

Since:
JDE 3.6.0

Following copied from interface: BlockEncryptorEngine
Parameters:
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.
Throws:
CryptoTokenException - Thrown when an problem occurs with the crypto token or the crypto token is invalid.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

getAlgorithm

public String getAlgorithm()
Returns the name of the algorithm used, ie "TripleDES".

This method will always return the String "TripleDES".

Returns:
A String that represents the name of the algorithm used to encrypt data.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

getBlockLength

public int getBlockLength()
Description copied from interface: BlockEncryptorEngine
Returns the block length of the engine in bytes.

Since:
JDE 3.6.0

Following copied from interface: BlockEncryptorEngine
Returns:
An integer that represents the number of bytes.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.



Copyright 1999-2009 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.
Copyright 2002-2003 Nokia Corporation All Rights Reserved.
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.