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

## cryptix.provider.cipher
Class LOKI91

    java.lang.Object
      |
      +--xjava.security.IJCE_Traceable
            |
            +--xjava.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.3 $

Since:
  Cryptix 2.2.2
Author:
  Raif S. Naffah

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

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

Method Summary
`java.lang.Object` | `clone()` Always throws a CloneNotSupportedException (cloning of ciphers is not supported for security reasons).
`protected int` | `engineBlockSize()` SPI: Returns the length of an input block, in bytes.
`protected void` | `engineInitDecrypt(java.security.Key key)` SPI: Initializes this cipher for decryption, using the specified key.
`protected void` | `engineInitEncrypt(java.security.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.
`protected void` | `finalize()` Cleans up resources used by this instance, if necessary.
`static LinkStatus` | `getLinkStatus()` Gets an object representing the native linking status of this class.

Methods inherited from class xjava.security.Cipher
`blockSize, 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, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

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

Method Detail

### getLinkStatus

    public static LinkStatus getLinkStatus()

  Gets an object representing the native linking status of this class.

### finalize

    protected final void finalize()

  Cleans up resources used by this instance, if necessary.
  Overrides:
    finalize in class java.lang.Object

### clone

    public final java.lang.Object clone()
                                 throws java.lang.CloneNotSupportedException

  Always throws a CloneNotSupportedException (cloning of ciphers is not supported for security reasons).
  Overrides:
    clone in class Cipher
  Tags copied from class: Cipher
  Throws:
    java.lang.CloneNotSupportedException - if the cipher is not cloneable.

### engineBlockSize

    protected 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

    protected void engineInitEncrypt(java.security.Key key)
                              throws java.security.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:
    java.security.KeyException - if the key is invalid.

### engineInitDecrypt

    protected void engineInitDecrypt(java.security.Key key)
                              throws java.security.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:
    java.security.KeyException - if the key 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.2
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.