A fast and easy-to-use Clojure library for message digests, checksums, HMAC, and digital signatures.
Pandect is a Clojure library that provides a comprehensive suite of cryptographic hash functions, checksums, HMACs, and digital signatures. It solves the problem of performing secure hashing and message authentication in Clojure applications with a simple, functional API that supports various input types and algorithms.
Clojure developers who need to implement cryptographic hashing, data integrity checks, message authentication, or digital signatures in their applications, such as when working with secure file storage, data transmission, or authentication systems.
Developers choose Pandect for its combination of broad algorithm support, performance optimizations, and a clean Clojure API that simplifies cryptographic operations compared to direct Java interop or other libraries.
Fast and easy-to-use Message Digest, Checksum and HMAC library for Clojure | Migrated to codeberg
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports over 30 hash and checksum algorithms including SHA families, BLAKE2, and RIPEMD, as detailed in the README's comprehensive algorithm table.
Accepts strings, byte arrays, files, and InputStreams with configurable buffer sizes for efficient stream handling, demonstrated in usage examples with `with-buffer-size`.
Includes benchmarks against other Clojure libraries and offers algorithm-specific namespaces to reduce startup and compile times, as highlighted in the performance section.
Provides a simple, Clojure-native interface that abstracts Java's cryptographic complexities, making common tasks like HMAC and digital signatures straightforward with minimal boilerplate.
Requires manual management of BouncyCastle dependencies and classpath adjustments when creating Uberjars, as explicitly warned in the README, adding significant deployment overhead and complexity.
Necessitates including and configuring BouncyCastle for certain algorithms (e.g., BLAKE2), which can introduce versioning issues, increase project footprint, and break in signed JAR environments.
Does not support encryption, key management, or other cryptographic functions beyond hashing, HMACs, and signatures, which may require integrating additional libraries for comprehensive security needs.