net.rim.device.api.crypto
Class TripleDESEncryptorEngine

java.lang.Object
  extended by 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.

See Also:
TripleDESDecryptorEngine, TripleDESKey
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:
BlackBerry API 3.6.0

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.

See Also:
Constant Field Values
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:
BlackBerry API 3.6.0


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.
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:
BlackBerry API 3.6.0


Method Detail

getAlgorithm

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

This method will always return the String "TripleDES".

Specified by:
getAlgorithm in interface BlockEncryptorEngine
Returns:
A String that represents the name of the algorithm used to encrypt data.
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:
BlackBerry API 3.6.0

getBlockLength

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

Specified by:
getBlockLength in 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.
Since:
BlackBerry API 3.6.0

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.

Specified by:
encrypt in 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.
Since:
BlackBerry API 3.6.0





Copyright 1999-2011 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Java is a trademark of Oracle America Inc. in the US and other countries.
Legal