HashLib4Pascal is an Object Pascal hashing library released under the permissive MIT License which provides 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.
Development is coordinated on GitHub and contributions are welcome. If you need help, please open an issue here.
Build Status
All CRC Variants from CRC3 to CRC64Adler32AP BKDR Bernstein Bernstein1 DEK DJB ELF FNV
FNV1a JS Jenkins3 Murmur2 MurmurHash3_x86_32 OneAtTime
PJW RS Rotating SDBM ShiftAndXor SuperFast XXHash32
FNV64 FNV1a64 Murmur2_64 SipHash2_4 XXHash64MurmurHash3_x86_128 MurmurHash3_x64_128MD2
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
PBKDF2
Argon2 (2i, 2d and 2id variants)
Scrypt
HMAC (all supported hashes)
KMAC (KMAC128, KMAC256)
Blake2MAC (Blake2BMAC, Blake2SMAC)
Shake (Shake-128, Shake-256)
CShake (CShake-128, CShake-256)
Blake2X (Blake2XS, Blake2XB)
KMACXOF (KMAC128XOF, KMAC256XOF)
Blake3XOF
FreePascal 3.0.0+
Delphi 2010+
If you want implementations in other languages, you can check out these
1MhFfW7tDuEHQSgie65uJcAfJgCNchGeKf0x6c1DC21aeC49A822A4f1E3bf07c623C2C1978a98345367-40