Delphi
DEC - Delphi Encryption Compendium Lite v6.3 for RS 13
DEC is a library for Embarcadero Delphi, containing different cryptographic algorithms. It contains algorithms for these categories:
Ciphers: encryption/d...
Description
DEC is a library for Embarcadero Delphi, containing different cryptographic algorithms. It contains algorithms for these categories:
Ciphers: encryption/decryption of data
Hashes: "cryptographic checksums"
Key derivation algorithms like Kdf1-Kdf3 and pbkdf2
HMAC message authentication
A cryptographic pseudo random number generator
CRCs: non cryptographic checksums based on CRC algorithms
Which Delphi versions are compatible?
The current version 6.4.1 is compatible with Delphi XE2 - Delphi 12.3 Athens. When defining the NO_ASM define in DECOptions.inc it is compatible with all platforms supported by Delphi! It might be compatible with FPC, but this has not been focus and is not tested. The development branch contains a more FPC compatible version already.
If you need support for older Delphi versions use version 5.2, which is compatible with Delphi 7-2007 at least but lacks some hash implementations, HMAC and KDF improvements. While V5.2 can be made compatible with newer Delphi versions with small modifications we strongly recommend to better adapt your code to use the current version of DEC, given all these improvements made since then. A list of changes is available in the docs folder.
What is the current status of this project?
V6.0 was released shortly before Christmas 2020. Since then work continued by some users supplying code, reporting bugs (regressions) along with fixes and by adding SHA2-224, which was still missing. Further new algorithms like SHA3 have been added meanwhile. Details about the changes and additions in V6.4.1 can be found in the VersionHistory.pdf file in the docs subfolder of the development branch.
In comparison to 5.2 we added some console, VCL and FMX based demo applications. The FMX based demos are even available via Google play as "DEC cipher demo" and "DEC hash demo".
Where can I get further information? For example if I'd like to contribute?
In the root folder of DEC V6.4.1 you will find further files with information about this project like NOTICE.txt, CONTRIBUTING.md, SECURITY.md. Also take the time to read DEC64.pdf in the Docs folder and look at the demos provided in the Demos subfolder.
Has it been tested?
DEC 5.2 came with some "arcane" test program testing the algoithms implemented using test data supplied via some text file. For many algorithms this test data stems from official documentation of the algorithms itsself. DEC 5.2 passes these tests.
DEC 6.0 reworked these tests into DUnit and DUnitX tests. We also added some more tests and with this replaced the "arcane" test program which used hard to understand code. A few of the implemented unit tests may still fail, but this is simply because they are empty sceletons at this point in time waiting to be filled in. We first need to work out how to implement these tests and maybe look for test data. Why don't you help out by researching useful test data for those few tests? We're talking at block chaining mode tests for the ciphers specifically.
In DEC 6.2 the unit tests for the hash classes were looked at and where not already used original test data vectors (as far as we could find them - for most we could) have been added to improve test coverage. V6.3 added further synthesized tests for some hash classes. For SHA3 and for the GCM block chaining method the original test vectors provided by NIST are used for the unit tests.
Contained hash algorithms
MD2
MD4
MD5
RipeMD128
RipeMD160
RipeMD256
RipeMD320
SHA0
SHA1
SHA224
SHA256
SHA384
SHA512
SHA3_224
SHA3_256
SHA3_384
SHA3_512
Shake128
Shake256
Haval128
Haval160
Haval192
Haval224
Haval256
Tiger
Panama
Whirlpool0
Whirlpool1
WhirlpoolT
Square
Snefru128
Snefru256
Sapphire
Contained cipher algorithms
Null
Blowfish
Twofish
IDEA
Cast256
Mars
RC4
RC6
AES
Square
SCOP
Sapphire
1DES
2DES
3DES
2DDES
3DDES
3TDES
3Way
Cast128
Gost
Magma
Misty
NewDES
Q128
RC2
RC5
SAFER
Shark
Skipjack
TEA
XTEA
TEAN
Contained block concatenating modes
Modes ending on x have been invented by the original developer of DEC
ECBx
CBCx
CTSx
CTS3
CFB8
CFBx
OFB8
OFBx
CFS8
CFSx
GCM
Contained key derivation algorithms:
KDF1
KDF2
KDF3
MGF1
PBKDF2
Contained message authentication algorithms
HMAC
Contained formattings
Copy
HEX
HEXL
Base16
Base16L
DECMIME32
Base64
MIME64
Radix64
PGP
UU
XX
ESCAPE
BigEndian16
BigEndian32
BigEndian64
Contained CRCs
8
10
12
16
16CCITT
16XModem
24
32
32CCITT
32ZModem
8ATMHEC
8SMBus
15CAN
16ZMODEM