Delphi has its hashing unit which helps you to hash with a number of different hashes including MD5, Bob Jenkins, SHA1, and SHA 2 (SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256). But, if you need some other hashing algorithms for your project you can use a free and open-source library called HashLib4Pascal.
HashLib4Pascal is an Object Pascal hashing library released under the permissive MIT License, which implements an easy-to-use interface for computing hashes and checksums of data. It also supports state-based (incremental) hashing.
HashLib4Pascal’s goal is to be the best option for hashing in Object Pascal by offering various hashing primitives via an easy to use API to Object Pascal developers.
Table of Contents
Available Algorithms
Hashes
Cyclic Redundancy Checks
- All CRC Variants from CRC3 to CRC64
Checksums
- Adler32
Non-Cryptographic Hash Functions
32-bit hashes
- AP BKDR Bernstein Bernstein1 DEK DJB ELF FNV
- FNV1a JS Jenkins3 Murmur2 MurmurHash3_x86_32 OneAtTime
- PJW RS Rotating SDBM ShiftAndXor SuperFast XXHash32
64-bit hashes
- FNV64 FNV1a64 Murmur2_64 SipHash2_4 XXHash64
128-bit hashes
- MurmurHash3_x86_128 MurmurHash3_x64_128
Cryptographic Hash Functions
- MD2
- MD4
- MD5
- SHA-0
- SHA-1
- SHA-2 (224, 256, 384, 512, 512-224, 512-256)
- GOST 34.11-94
- GOST R 34.11-2012 (AKA Streebog) (256, 512)
- Grindahl (256, 512)
- Has160
- RIPEMD (128, 160, 256, 256, 320)
- Tiger (128, 160, 192 (Rounds 3, 4, 5))
- Tiger2 (128, 160, 192 (Rounds 3, 4, 5))
- Snefru (128, 256)
- Haval (128, 160, 192, 224, 256 (Rounds 3, 4, 5))
- Panama
- RadioGatun (RadioGatun32, RadioGatun64)
- WhirlPool
- Blake2B (160, 256, 384, 512)
- Blake2S (128, 160, 224, 256)
- SHA-3 (224, 256, 384, 512)
- Keccak (224, 256, 288, 384, 512)
- Blake2BP
- Blake2SP
- Blake3
Key Derivation Functions
Password Hashing Schemes (Password-Based Key Derivation Functions)
- PBKDF2
- Argon2 (2i, 2d and 2id variants)
- Scrypt
MAC
- HMAC (all supported hashes)
- KMAC (KMAC128, KMAC256)
- Blake2MAC (Blake2BMAC, Blake2SMAC)
XOF (Extendable Output Function)
- Shake (Shake-128, Shake-256)
- CShake (CShake-128, CShake-256)
- Blake2X (Blake2XS, Blake2XB)
- KMACXOF (KMAC128XOF, KMAC256XOF)
- Blake3XOF
Head over and download the full source code for the hash library for Delphi.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition
I’ve been trying to run the argon2id algorithm for 2 days now, unfortunately without success.
Hi Pavel, you’re right, there does seem to be room for improvement with regard to the documentation. Did you look at the unit tests included with the download? In there is a specific unit for testing the Argon algorithms – and it shows you how to use them (because it has to set up an example in order to make the test work).
You can find the specific test here: https://github.com/Xor-el/HashLib4Pascal/blob/master/HashLib.Tests/src/PBKDF_Argon2Tests.pas