Awesome Rust Cryptography

Showcase of notable cryptography libraries developed in Rust

View on GitHub

Short URL for this page: cryptography.rs

Below is a list of actively maintained, high-quality cryptography libraries independently developed by members of the Rust Community.

The list is compiled and curated by the Rust Cryptography Interest Group (RCIG). If you have any suggestions, questions, or other concerns with this list, please open an issue and we’ll get back to you.

The following badges are used to provide more information about libraries that meet certain criteria:

Badge Description
crate has at least one security audit (click to view)
crate has been formally verified

Note: libraries in each section are listed in alphabetical order, not order of preference.

Table of Contents

High-level Libraries

up

These libraries function at a very high level and are designed for simplicity and ease-of-use. They provide integrated key management in addition to providing high-level APIs for algorithms.

Transport Encryption Libraries

up

These libraries implement protocols that are designed to protect data-in-transit; i.e., network communications.

Collections of Cryptographic Primitives

up

These libraries provide omnibus collections of different cryptographic primitives contained within a single library.

Traits for Cryptographic Primitives

up

The crates in this section provide trait-based abstractions for different types of cryptographic primitives, allowing implementations of higher-level cryptographic algorithms and protocols which are generic over specific primitives and implementations.

Symmetric Cryptography

up

These crates implement individual symmetric cryptography algorithms.

Authenticated Encryption with Associated Data (AEAD) Algorithms

These are high-level symmetric encryption libraries which ensure both the confidentiality and integrity of data.

Ciphers (low-level block ciphers and stream ciphers)

Note: most users should use higher-level AEAD encryption algorithms enumerated above. Crates in this section are low-level “unauthenticated” ciphers which should be wrapped up in a higher-level construction prior to use.

Hash Functions and Friends

Password Hashing Functions

Asymmetric Cryptography

up

These crates implement individual asymmetric (a.k.a. public key) cryptography algorithms.

Asymmetric Primitives

Digital Signatures

Encryption (Hybrid Encryption)

Key Exchange

Threshold & Multiparty Signatures

Verifiable Delay Functions (VDFs)

Verifiable Random Functions (VRFs)

Platform / Framework Bindings

up

These libraries are FFI bindings to OS platforms and commonly used cryptography frameworks.

Cryptographic Hardware

up

These libraries provide host-side drivers for cryptographic hardware devices (e.g. authentication tokens, HSMs).

Post-Quantum Cryptography

up

These libraries are designed to be secure against hypothetical future attacks by large quantum computers.

Random Number Generators

up

Zero-knowledge Proofs

up

Secure Multiparty Computation

up

These libraries allow several participants to collectively perform a computation without revealing what is being computed to the participants.

Fully Homomorphic Encryption

up

These libraries allow to perform secure computation, e.g. computations over encrypted data.

Format Decoders/Encoders

up

These libraries implement parsers and serializers for various cryptography-related formats.

Defensive Measures

up

These libraries can be used to harden cryptographic algorithms against attacks.

Constant-Time Code

Protecting Secrets in Memory

Zeroing Memory

Arithmetic

up

These libraries implement mathematical algorithms potentially interesting for cryptography-related applications.

Miscellany

up

Other libraries which don’t fall into the categories listed above.