A modified DES Implementation,  NIST: FIPS PUB 46-2, 1993- The S-box relation was removed
making it a complete shuffle.

Version 2.0, March 2001 - this is freeware and may be distributed along with this readme file.

This version was modified to remove thread conflicts so it will now work on Windows systems.
The random number generator for the key generation option was upgraded to UNI- 
 Reference:
!
!    David Kahaner, Clever Moler, Steven Nash,
!    Numerical Methods and Software,
!    Prentice Hall, 1988.
  references  marsaglia g., "comments on the perfect uniform random
!                 number generator", unpublished notes, wash s. u.
It is satisfactory but has some rounding problems when I construct a 64 bit value, this introduces 
a uncritical type of key space problem. No relation is introduced, only a slightly reduced key space results.


Note to Users of this program:  The application class name is des.class.
The other THREE classes support this application and must be in the same
directory as the application class.

Use the command "java des"  to execute the program. A Java Runtime virtual machine must be installed
on you computer to use this program.
This program works on IBM OS2 WARP 3.0 JAVA 2, and Windows Java2.

Warning: Do not re-encrypt a file with the ".close" extension or you might lose all its data. To do multiple encryptions rename it to an ".open" extension before re-encryption.


/*******************************************************/
This program sets the input file parity bits to random numbers just before encyption.  This does not have any effect on the screen output after decryption.
This removes a bad parity relation from the output encrypted file.

On a general note:
From a logical stand-point there is a set of encrypted forms that maintains
the parity relation and this set has a single key!!! 

This set has about 100,000 members for DES, highly dependent on the byte
domain.  This creates a fatal vulnerability in DES, unless the relationship is broken within the particular implementation. 
/********************************************************/

The s-block values within this implementation have been changed so that there is no way to encypt/decrypt a Standard DES implementation.  The program will function quite nicely as a stand-alone application.

FYI- The s-block values do not have the effect of increasing encryption complexity.

Douglas Eagleson
llef@lycos.com