All Packages Class Hierarchy This Package Previous Next Index
Class cryptix.provider.cipher.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:
- Bruce Schneier,
"Chapter 12 Data Encryption Standard," and
"Section 15.2 Triple Encryption,"
Applied Cryptography, 2nd edition,
John Wiley & Sons, 1996
- R.C. Merkle and M. Hellman,
"On the Security of Multiple Encryption,"
Communications of the ACM,
vol. 24 no. 7, 1981, pages 465-467.
- 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
-
DES2X()
- Constructs a DES2X cipher object, in the UNINITIALIZED state.
-
engineBlockSize()
- SPI: Returns the length of an input block, in bytes.
-
engineInitDecrypt(Key)
- SPI: Initializes this cipher for decryption, using the
specified key.
-
engineInitEncrypt(Key)
- SPI: Initializes this cipher for encryption, using the
specified key.
-
engineUpdate(byte[], int, int, byte[], int)
- SPI: This is the main engine method for updating data.
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".
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
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
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
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