An Elixir wrapper for Erlang's crypto and public_key modules, providing simplified, secure cryptography functions with sane defaults.
ExCrypto is an Elixir library that provides a wrapper around Erlang's crypto and public_key modules, simplifying cryptographic operations like encryption, decryption, signing, and key generation. It aims to make writing secure Elixir applications easier by offering idiomatic APIs and sensible defaults, reducing the learning curve and potential for errors when implementing cryptography.
Elixir developers who need to integrate cryptographic functions—such as secure messaging, data encryption, or digital signatures—into their applications without dealing directly with Erlang's low-level crypto APIs.
Developers choose ExCrypto because it provides a clean, Elixir-native interface to Erlang's robust cryptography libraries, with built-in conveniences like default parameters and base64 key encoding. It reduces boilerplate and complexity while ensuring security best practices are followed.
Wrapper around the Erlang crypto module for Elixir.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Wraps Erlang's low-level crypto and public_key modules into idiomatic Elixir functions, such as ExPublicKey.sign/verify, making cryptographic operations more accessible and less error-prone for developers.
Provides built-in defaults for common tasks, like generating AES keys in base64 format with ExCrypto.generate_aes_key/2, reducing boilerplate and simplifying implementation.
Includes practical examples for secure message authentication, such as signing JSON payloads with timestamps, which promotes best practices in payload integrity and sender verification.
Supports loading RSA keys from PEM files and generating AES keys in various lengths (128, 192, 256-bit), with options for byte or base64 output, streamlining key handling.
Primarily focuses on RSA and AES from Erlang's modules, lacking explicit support for newer algorithms like ECC, which might be necessary for modern cryptographic applications.
Adds a layer of abstraction over direct Erlang calls, which could introduce minor performance overhead, though it's designed for simplicity rather than raw speed.
While basic examples are provided, such as for JSON signing, more complex scenarios or edge cases might require developers to fall back to Erlang documentation for deeper customization.