All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class cryptix.provider.cipher.DESX

java.lang.Object
   |
   +----java.security.IJCE_Traceable
           |
           +----java.security.Cipher
                   |
                   +----cryptix.provider.cipher.DESX

public class DESX
extends Cipher
implements SymmetricCipher
This class implements DESX encryption with two independent keys. DESX acts as a block cipher with an 8 byte block size.

The encoded form of the DESX key should be a 24-byte array, consisting of one 8-byte DES key K and two XOR keys K1 and K2 in order - K, K1 and K2. Encryption and decryption are done as follows:

When DESX is used with the CBC mode class (algorithm name "DESX/CBC"), the result is Outer-CBC, and only one IV is used.

References:

  1. Bruce Schneier, "Chapter 12 Data Encryption Standard," and "Section 15.2 Triple Encryption," Applied Cryptography, 2nd edition, John Wiley & Sons, 1996

  2. R.C. Merkle and M. Hellman, "On the Security of Multiple Encryption," Communications of the ACM, vol. 24 no. 7, 1981, pages 465-467.

  3. P Karn, P Metzger, W A Simpson "The ESP Triple DES Transform," Internet Draft, draft-simpson-esp-des3-x-01.txt

Copyright © 1998 Systemics Ltd on behalf of the Cryptix Development Team.
All rights reserved.

$Revision: 1.2 $

Author:
Sascha Kettler

Constructor Index

 o DESX()
Constructs a DESX cipher object, in the UNINITIALIZED state.

Method Index

 o engineBlockSize()
SPI: Returns the length of an input block, in bytes.
 o engineInitDecrypt(Key)
SPI: Initializes this cipher for decryption, using the specified key.
 o engineInitEncrypt(Key)
SPI: Initializes this cipher for encryption, using the specified key.
 o engineUpdate(byte[], int, int, byte[], int)
SPI: This is the main engine method for updating data.

Constructors

 o DESX
 public DESX()
Constructs a DESX cipher object, in the UNINITIALIZED state. This calls the Cipher constructor with implBuffering false, implPadding false and the provider set to "Cryptix".

Methods

 o engineBlockSize
 public int engineBlockSize()
SPI: Returns the length of an input block, in bytes.

Returns:
the length in bytes of an input block for this cipher.
Overrides:
engineBlockSize in class Cipher
 o engineInitEncrypt
 public void engineInitEncrypt(Key key) throws KeyException
SPI: Initializes this cipher for encryption, using the specified key.

Parameters:
key - the key to use for encryption.
Throws: KeyException
if one of the following occurs:
  • key.getEncoded() == null;
  • The length of the user key array is invalid.
Overrides:
engineInitEncrypt in class Cipher
 o engineInitDecrypt
 protected void engineInitDecrypt(Key key) throws KeyException
SPI: Initializes this cipher for decryption, using the specified key.

Parameters:
key - the key to use for decryption.
Throws: KeyException
if one of the following occurs:
  • key.getEncoded() == null;
  • The length of the user key array is invalid.
Overrides:
engineInitDecrypt in class Cipher
 o engineUpdate
 protected int engineUpdate(byte in[],
                            int inOffset,
                            int inLen,
                            byte out[],
                            int outOffset)
SPI: This is the main engine method for updating data.

in and out may be the same array, and the input and output regions may overlap.

Parameters:
in - the input data.
inOffset - the offset into in specifying where the data starts.
inLen - the length of the subarray.
out - the output array.
outOffset - the offset indicating where to start writing into the out array.
Returns:
the number of bytes written.
Throws: CryptixException
if the native library is being used, and it reports an error.
Overrides:
engineUpdate in class Cipher

All Packages  Class Hierarchy  This Package  Previous  Next  Index