Copyright:      Hagen Reddmann  mailto:[email protected]
Author:         Hagen Reddmann
Remarks:        freeware, shareware
Description:    Delphi Encryption Compendium Part I-III

                D2-D5, BCB3-4

DEC Part I -----------------------------------------------

Status:         Freeware, Version 3.0
Description:    Includes variuos basicly Algorithm:

   5 Checksum:  CRC32, XOR32bit, XOR16bit, CRC16-CCITT, CRC16-Standard

  23 Hash:      MD4, MD5, SHA (other Name SHS), SHA1,
                RipeMD128, RipeMD160, RipeMD256, RipeMD320,
                Haval (128, 160, 192, 224, 256) with Rounds,
                Snefru, Square, Tiger
                Sapphire II (128, 160, 192, 224, 256, 288, 320)


  40 Cipher:    Gost, Cast128, Cast256, Blowfish, IDEA
                Mars, Misty 1, RC2, RC4, RC5, RC6, FROG, Rijndael,
                SAFER, SAFER-K40, SAFER-SK40,SAFER-K64, SAFER-SK64,
                SAFER-K128, SAFER-SK128, TEA, TEAN, Skipjack, SCOP,
                Q128, 3Way, Twofish, Shark, Square, Single DES, Double DES,
                Triple DES, Double DES16, Triple DES16, TripleDES24,
                DESX, NewDES, Diamond II, Diamond II Lite, Sapphire II

   2 RNG:       Standard Random Generator, Linear Feedback Shift Register RNG with
                variable Period from 2^64-1 to 2^2032-1.

6 Text Formats: Hexadecimal, MIME Base 64, Plain, RFC1760 Six Word, UU Coding, XX Coding


  others:       * Low Level API to access outside from Delphi and BCB
                * Fast implementation (i.E. THash_MD4 > 27Mb/sec, TCipher_Blowfish > 8.0 Mb/sec)
                * Stringformat Management, includes:
                  HEX, MIME Base 64, RFC1760 Six Word, UU and XX Coding String converting and Samples
                * Designtime Manager Components for Hash's and Cipher's
                * Full and easy objectorientated
                * RNG's can be cryptographicaly secure
                * Standard Cipher Modes:
                    CBC    - Cipher Block Chaining
                    CTS    - Cipher Text Stealing
                    CFB    - Cipher Feedback
                    OFB    - Output Feedback
                    ECB    - Electronic Code Book
                    CBCMAC - CBC Message Authentication Code
                    CTSMAC - CTS Message Authentication Code
                    CFBMAC - CFB Message Authentication Code
                * High optimized Assembler Core
                * Progress Gauge Support in all Cipher's, Hash's, CheckSums's
                * Self Test Support for all Cipher's, Hash's, CheckSums's to test of
                  any illegal or incorrect Modification's
                * Detailed and full DEMO
                * variable HMAC's - Hash Message Authentication Code Support for all THash_XXX Classes,
                  supports RFC2104 Standard HMAC's
                * automatically Compression Support
                * Chaining from all THash_XXX, TRandom_XXX, TCipher_XXXX and TCompress_XXX Classes
                * En/Decryption/Scrambling/Wipe with all TProtection Classes,
                  this includes all Hash's, Cipher's, Random's and Compress's Classes
                * Internet RFC2289/RFC1760/RFC2444 One Time Password Routines as Component
                * many more...

Installation:   install \DEC\Source\DECReg.pas in Your Palette


DEC Part II ------incomming, not included-----------------------------------------

Status:         Shareware, Version Beta
Description:    Asymmetric (Public Key) Encryption, Digital Signatures
                Blum Blum Shub RNG, mathematical Big Number Library,
                Steganography



DEC Part III -----incomming, not included-----------------------------------------

Status:         Shareware, Version Beta
Description:    Variuos Objects and Classes to use Part I and II
                * TSecureRegINI Object, encapsulate the TINIFile and TRegINIFile class to
                  en/decode defined Entries
                * TOneTimePassword, Component for a secure One Time Password

-------------------------------------------------------------------------------------------

to anonyme Designers: send me your ideas or remarks or implement more hash's and
                      cipher's to make this Packages to the biggest for Delphi and BCB :-)
                      (i.E. Cipher WAKE, LOKI97, Serpent, Yarrow, DEAL, SEAL,
                                   FEAL, NSEA, REDOC II & III, Lucifer, a3a8
                                   and many more, but to many for me)

Copyright, Licensing: many Algorithm in this Packages have restriction for use, check
                      the law in your country, any Patents or Copyrights
                      before use this Packages.

* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This Packages is fully developed outside from the USA.

Specials:             All executables are compressed
                      with the powerfull ASPack (Rate > 50%) from Alexey Solodovnikov at
                      http:\\www.entechtaiwan.com\aspack.htm

-------------------------------------------------------------------------------------------

History:     Beginning at Feb 1999 to Aug 1999

-------------------------------------------------------------------------------------------

Version 3.0

 - Internet RFC2289/RFC1760/RFC2444 One Time Password Routines added
 - Internet RFC2104 HMAC Support
 - String Management (Converting) added
 - Object Hiearchy changed, all THash_xxx,TCipher_xxx,TRandom_xxx and TCompress_xxx are
   now Descends from TProtection. Now, a multiple chaining from all above Classes supported.
 - Now absolutly D2 compatible.

 - Full reorganization, better Compilerversions Management.
 - Speedup, i.E. Blowfish > 8 Mb/sec (fantastic :-), Q128 > 10 Mb/sec,
            TEA > 6 Mb, IDEA > 2.5 Mb/sec, Twofish > 6 Mb/sec, all on PII 266MHz
 - Twofish changed, old was bad.
 - In all Hashclasses changed the buggy Buffermanagement.
 - StrToBase64 and Base64ToStr changed and exchanged, now produce correct Results.
 - Property "IncludeHashKey" removed, make TCipher Class uniform

 - New Cipher Modes added,
   cmCBCMAC, cmCTSMAC, cmCFBMAC - Message Authentication Codes, Input Data are readonly
   cmCBC, cmCTS, cmCFB supportes now MAC's (Message Authentication Code)
   Demo to use these can You find in ResFrm.pas or GenForm.pas.
 - New Cipher Method "CalcMAC()" to calculate a MAC after any en/decryption

 - Old Cipher.pas splitted in two Files, Cipher.pas contains now a good Selection.
   Cipher1.pas contains all other Ciphers. In many cases are 40 Ciphers to big.

 - New a TRandom Basicclass for Random Number Generation,
 - TRandom_LFSR (Linear Feedback Shift Register) a fast Implementation with variable
   Period from 2^64-1 to 2^2032-1 (astronomical :-), with using from Cipher.pas these
   Randomclasses can be automaticaly cryptographicaly secure.

 and many more...


------------------------------------------------------------------------------------------

Version 2.3

 maked compatible with BCB 3 and 4, removed all abstract Methods and NewInstance Methods.

 new:            Secure Random Number Generator with a Period 2^256-1
                 included in RNG.pas
 added:          in Hash.pas and Cipher.pas Secure Random Number Generator Support

 specialy:       removed all fucking LOOP Statements in assembler core,
                 it's slow and produced bad iteration
                 as result: all Checksums speeded very up and
                            all Ciphers in cmCBC and cmCTS Mode speeded up
                            (i.E. TCipher_SCOP from 22 Mb/sec to 28 Mb/sec)

-------------------------------------------------------------------------------------------

Version 2.2

 added Cipher:   Square, all DES Cipher 7 types, Diamond II, Diamond II Lite, Sapphire II
 added Hash:     SHA, Square, Sapphire II (128, 160, 192, 224, 256, 288, 320)
 added Checksum: CRC16-CCITT Norm, CRC16-Standard Norm (XModem, ARC)

 bugfixes:       CRC32 offset Problem and in THash_CRC32.Done inverse the Result
                 Overlapping in TCipher.InternalCodeStream
                 DecodeString was called EncodeBuffer, now Decodebuffer

 added:          ProgressEvent (Gauges) for Cipher's and Hash's
                 Event OnProgress from TCipherManager and THashManager

 added:          more Examples

 changed:        DEC1 API, added a Demo to using DEC1.DLL

                 cmCTS Mode, XOR's the Data before and now after the encryption.
                 This has better Securityeffect when using a InitVector, the Output is
                 secure when a bad InitVector is used, ca 1% Speed lossed
                 cmCBC Mode is now equal to the old cmCTS Mode.


-------------------------------------------------------------------------------------------

Version 2.1

 added:          Self-Test support, Methods TCipher.SelfTest and TCipher.TestVector
                                    Methods THash.SelfTest and THash.TestVector

                 Cipher KeySize-checking, Method TCipher.InitBegin()
                 Cipher Init-checking, property TCipher.Initialized


 added Cipher:   TEAN, SCOP (very fast), Q128, 3Way, Twofish, Shark
 added Hash:     Snefru, RipeMD128, RipeMD256, RipeMD320, Tiger


 added Rounds for THaval_xxxx, from 3-5

       3 Rounds 174 % faster than with 5 Rounds, PII 266 12.74 Mb/sec
       4 Rounds 121 % faster than with 5 Rounds, PII 266  8.88 mb/sec
       5 Rounds                                  PII 266  7.32 mb/sec

       THash_Haval256           default Rounds is 5
       THash_Haval224 / 192     default Rounds is 4
       THash_Haval160 / 128     default Rounds is 3

 added in TCipherManager: Methods EncodeString(), DecodeString(),
                                  EncodeBuffer(), DecodeBuffer()

 added Low Level API in unit DEC_API.pas and Low Level DLL for use without Delphi


 changed:        Endian conversions routines, SwapInteger and SwapIntegerBuffer
                 use now Processor specific code to speedup the conversion

 bug fixes:      assember code in XORBuffers save now register EDI
                 TCipher.EncodeString and DecodeString changed,
                 old code produced Access Violation's

 speeded up:     TCipher_Cast128   145 %
                 TCipher_Cast256   118 %
                 TCipher_Blowfish  130 %
                 TCipher_Gost      139 %
                 TCipher_Mars      125 %

 speeded up:     THash_MD4         137 %
                 THash_MD5         126 %
                 THash_SHA1        134 % for <= 386   and 148 % for >= 486 CPU
                 THash_RipeMD160   140 %
                 THash_Haval       173 %

-------------------------------------------------------------------------------------------