Skip to content
Hashing for Modern Object Pascal
Pascal Other
  1. Pascal 99.5%
  2. Other 0.5%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github add FUNDING.yml Aug 25, 2019
HashLib.Benchmark minor refactoring Oct 19, 2019
HashLib.Tests minor refactoring Oct 19, 2019
HashLib/src minor refactoring Oct 19, 2019
.gitignore updated README and gitignore Feb 7, 2018
.travis.install.py update travis build Oct 20, 2019
.travis.yml update travis build Oct 20, 2019
LICENSE update license year. Feb 17, 2019
README.md - add KMAC(XOF) support Sep 28, 2019

README.md

HashLib4Pascal: Hashing for Modern Object Pascal License

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 Build Status

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, 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)

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)

XOF (Extendable Output Function)


  • Shake (Shake-128, Shake-256)

  • CShake (CShake-128, CShake-256)

  • Blake2X (Blake2XS, Blake2XB)

  • KMACXOF (KMAC128XOF, KMAC256XOF)

Supported Compilers


  • FreePascal 3.0.0+

  • Delphi 2010+

Other Implementations


If you want implementations in other languages, you can check out these

Tip Jar


  • 💵 Bitcoin: 1MhFfW7tDuEHQSgie65uJcAfJgCNchGeKf
  • 💶 Ethereum: 0x6c1DC21aeC49A822A4f1E3bf07c623C2C1978a98
  • 💷 Pascalcoin: 345367-40
You can’t perform that action at this time.