Dea is an implementation of the data encryption algorithm as described in
ANSI X3.92-1981 and FIPS 46-1. I did it as an exercise when I took part
in a cryptography seminar. Its performance comes close to what is feasible
in C without machine specific optimizations and excessively large lookup
tables, I believe. I have several ideas for 64 bit machines, but currently,
I don't feel like continue working on that because I have other important
things to do.

The code comes in two parts, a library containing the dea function, a key
schedule generator and an initialization routine. Built around it is a
compress(1)-like interface.

Building the library:
	In the library directory (dealib) you'll find a README file enumerating
	several tested machine - OS - compiler combinations suggesting one for
	best performance. If your platform is one of them, just run make(1)
	with the appropriate values for OPTIM and CC, otherwise read the README
	file and try to understand the definitions in machine.h and supply ones
	that fit your machine.
	
	Setting ANSI and WARN doesn't affect performance but may help porting the
	code to a yet unsupported machine.

	When finally the library is compiled, two test programs will be build, too.
	One is for checking its correctness (suite) and the other estimates the
	encryption speed (speed).
	Speed needs a facility the send itself a signal after some seconds of
	virtual time (time the process was actually running). As distributed, it
	uses the commonly available setitimer(2) service.

	Running suite, there should be no output at all, otherwise something
	is wrong.
	The output of speed is the count how many times the key schedule and
	encryption function were executed in a second and how many micro
	seconds one run takes.

Building the interface:
	The code builds and runs on all common flavours of unix machines supporting
	a sbuset of POSIX and ANSI interface standards, e.g. Solaris 1 and 2,
	DEC OSF/1 and Ultrix 4, IBM AIX 3.2 and SGI Irix 4 and 5. It does not
	build on NeXTStep machines because its library and system interface is
	a museumpiece. DOS and Windows is explicitly not supported.

	Run make or make test to build and test the program.

Installing:
	Check the values of the BINDIR, MANDIR, INSTBIN and INSTDAT values in the
	Makefile, the run make intall.

Malte Uhl	malte@techfak.uni-bielefeld.de
