Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Cryptix V3.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## cryptix.provider.cipher
Class DES2X

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

public class DES2X
extends Cipher
implements SymmetricCipher

This class implements DES2X encryption with four independent keys. DES2X acts as a block cipher with an 8 byte block size.

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

- C = E(E(P XOR K1) XOR K2) XOR K3
- P = D(D(C XOR K3) XOR K2) XOR K1

When DES2X is used with the CBC mode class (algorithm name "DES2X/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 $

Since:
  Cryptix 3.0.4
Author:
  Sascha Kettler

Fields inherited from class java.security.Cipher
`DECRYPT, ENCRYPT, UNINITIALIZED`

Constructor Summary
`DES2X()` Constructs a DES2X cipher object, in the UNINITIALIZED state.

Method Summary
`int` | `engineBlockSize()` SPI: Returns the length of an input block, in bytes.
`protected void` | `engineInitDecrypt(Key key)` SPI: Initializes this cipher for decryption, using the specified key.
`void` | `engineInitEncrypt(Key key)` SPI: Initializes this cipher for encryption, using the specified key.
`protected int` | `engineUpdate(byte[] in, int inOffset, int inLen, byte[] out, int outOffset)` SPI: This is the main engine method for updating data.

Methods inherited from class java.security.Cipher
`blockSize, clone, crypt, crypt, crypt, doFinal, doFinal, doFinal, doFinal, engineCiphertextBlockSize, engineCrypt, engineGetParameter, engineInBufferSize, engineOutBufferSize, enginePlaintextBlockSize, engineSetPaddingScheme, engineSetParameter, getAlgorithm, getAlgorithms, getAlgorithms, getCiphertextBlockSize, getInputBlockSize, getInstance, getInstance, getInstance, getMode, getOutputBlockSize, getPadding, getPaddingScheme, getParameter, getPlaintextBlockSize, getProvider, getState, inBufferSize, inBufferSizeFinal, initDecrypt, initEncrypt, isPaddingBlockCipher, outBufferSize, outBufferSizeFinal, setParameter, toString, update, update, update, update`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### DES2X

    public DES2X()

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

Method Detail

### engineBlockSize

    public int engineBlockSize()

  SPI: Returns the length of an input block, in bytes.
  Overrides:
    engineBlockSize in class Cipher
  Returns:
    the length in bytes of an input block for this cipher.

### engineInitEncrypt

    public void engineInitEncrypt(Key key)
                           throws KeyException

  SPI: Initializes this cipher for encryption, using the specified key.
  Overrides:
    engineInitEncrypt in class Cipher
  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.

### engineInitDecrypt

    protected void engineInitDecrypt(Key key)
                              throws KeyException

  SPI: Initializes this cipher for decryption, using the specified key.
  Overrides:
    engineInitDecrypt in class Cipher
  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.

### 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.

  Overrides:
    engineUpdate in class Cipher
  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.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Cryptix V3.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (C) 1995-2000 The Cryptix Foundation Ltd. All rights reserved.