AES (and Serpent/Twofish) demo applications  (c) 2003-2017 W.Ehrhardt

Simple demo programs for file encryption/authentication and
decryption/verification

Source code included/available

http://wolfgang-ehrhardt.de

The programs use two modes, first is 128 bit AES-CTR mode with HMAC-SHA1-128;
the second mode is EAX. The 96 bit salt is a truncated SHA1 hash, keys and
pass phrase verifier are derived from the pass phrase according to RFC 2898.

To compile the demo programs from the sources you need the base routines
aes_<yyyy-mm-dd>.zip, crc_hash_<yyyy-mm-dd>.zip, and util_<yyyy-mm-dd>.zip.

The FZCA program optionally compresses the data before encryption, the source
from zlibw114_<yyyy-mm-dd>.zip is required.

Since Nov. 2006 there is the contributed fcaes256 unit started by Giorgio
Tani using 256 bit AES-EAX mode or AES-CTR and HMAC-Whirlpool-128 (also used
in Giorgio's PeaZip project). fca256 is the 256 bit equivalent of FCA.

In Mar. 2016 Giorgio Tani contributed analogous units for the AES finalists
Serpent and Twofish, they are included in this archive together with four
test programs.

---------------------------------------------------------------------------
Last changes (Nov. 2017)
- FPC/ARM and Delphi Tokyo adjustments

FPC note: Use the source with std.inc V1.30 or newer which introduces a
helper definition for FPC's crazy handling of procedure variables. If you
need to compile in Turbo Pascal mode (-So or -Mtp) you should manually change
the single {$ifdef FPC} to {$ifdef FPC_ProcVar} in the hash descriptor
constants (sha1.pas and whirlpool.pas).

2 GB Note: the demo programs should only be applied to files with sizes less
than 3 GB if compiled with Delphi or 16 bit Pascal (Delphi eof bug and/or 32
bit filesize function). Newer FreePascal versions with 64 bit filesize
function may work for such big files.
