A C++11 header-only library providing a modern, flexible API for cryptographic hash functions and extendable output functions.
digestpp is a C++11 header-only library for cryptographic hash functions and extendable output functions (XOFs). It provides a modern, fluent API to compute message digests using algorithms like SHA-2, SHA-3, BLAKE2, and Skein, solving the need for a clean, dependency-free hashing solution in C++ projects.
C++ developers working on applications that require cryptographic hashing, such as data integrity checks, password hashing, digital signatures, or protocol implementations needing XOFs.
Developers choose digestpp for its header-only simplicity, comprehensive algorithm support with security annotations, and a modern C++ API that is both flexible and easy to integrate without external dependencies.
C++11 header-only message digest library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Just copy the digestpp folder and include it; no complex build steps or external dependencies, making integration trivial for any C++ project.
Offers a chainable interface like absorb().hexdigest() using C++11 features, reducing boilerplate and improving code readability compared to traditional C-style APIs.
Includes a wide range of hash functions and XOFs like SHA-2, SHA-3, BLAKE2, and Skein, with clear security status indicators to help developers choose appropriately.
Supports both runtime and compile-time output size specification for variable-length algorithms, plus XOFs with squeeze() for arbitrary-length outputs, catering to diverse use cases.
Admits in the README that implementations are in standard C++ without SIMD optimizations, making it slower than libraries like OpenSSL or Crypto++ for intensive workloads.
Explicitly does not support big endian systems, limiting portability to certain embedded or legacy hardware environments.
States that no attempts were made to ensure constant-time execution, which could introduce side-channel vulnerabilities in security-sensitive applications.
Multiple typedefs for similar algorithms (e.g., BLAKE2b, blake2xb, blake2xb_xof) can be confusing and increase the learning curve for developers unfamiliar with cryptographic nuances.