All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class cryptix.provider.cipher.LOKI91

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

public final class LOKI91
extends Cipher
implements SymmetricCipher
LOKI is a proposed Australian alternative cipher to DES. It was first designed by L. Brown, J. Pieprzyk and J. Seberry in 1990 and later re- designed (and renamed LOKI91), with improved resistance to differential cryptanalysis, by L. Brown, M. Kwan, J. Pieprzyk and J. Seberry.

LOKI91 is a 64-bit symmetric block cipher with a 64-bit user key. See LOKI91KeyGenerator for information about weak keys.

This current version is based on special C-code obtained, under license, from The School of Computer Science, UC, UNSW. The speed gain is achieved by pre-computing the 4,096 values of the substitutions (S-Box) used by the algorithm as well as the permutations for all possible 256 input values for each of the four 8-bit blocks.

References:

  1. Bruce Schneier, Applied Cryptography, 2nd edition, John Wiley & Sons 1996, 314-316.

  2. Personal correspondance with Dr. Lawrence Brown.

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

$Revision: 1.2 $

Author:
Raif S. Naffah

Constructor Index

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

Method Index

 o clone()
Always throws a CloneNotSupportedException (cloning of ciphers is not supported for security reasons).
 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.
 o finalize()
Cleans up resources used by this instance, if necessary.
 o getLinkStatus()
Gets an object representing the native linking status of this class.

Constructors

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

Methods

 o getLinkStatus
 public static LinkStatus getLinkStatus()
Gets an object representing the native linking status of this class.

 o finalize
 protected final void finalize()
Cleans up resources used by this instance, if necessary.

Overrides:
finalize in class Object
 o clone
 public final Object clone() throws CloneNotSupportedException
Always throws a CloneNotSupportedException (cloning of ciphers is not supported for security reasons).

Overrides:
clone in class Cipher
 o engineBlockSize
 protected 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
 protected 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 the key 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 the key 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