Awesome Cryptography Rust
Collect libraries and packages about cryptography in Rust.
- Collection Library
- Symmetric
- Public-key / Asymmetric
- One-way Hash Function
- Message Authentication Code (MAC)
- Digital Signature
- Rseudo Random Number Generator (PRNG)
- Zero-Knowledge Proofs (ZKP)
- Homomorphic Encryption (HE)
- Secure Multi-party Computation (MPC)
- Theorem
- Attack Defense
- Others Wait to List
Cryptography
Collection library
- libsm A Rust Library of China's Standards of Encryption Algorithms (SM2/3/4).
- mesalink MesaLink is a memory safe and OpenSSL-compatible TLS library.
- orion Usable, easy and safe pure-Rust crypto.
- rage age implementation. A simple, secure and modern encryption tool with small explicit keys, no config options, and UNIX-style composability.
- ring Safe, fast, small crypto using Rust. (curve25519, aes-gcm, sha-256, sha-384, sha-512, hmac, hkdf, pbkdf2, p-256, p-384, x25519, chacha20-poly1305, ed25519).
- rust-crypto A (mostly) pure-Rust implementation of various cryptographic algorithms.
- rustls A modern TLS library in Rust.
- sodiumoxide Sodium Oxide: Fast cryptographic library for Rust (bindings to libsodium).
Symmetric cryptography
- aeads: Collection of Authenticated Encryption with Associated Data algorithms written in pure Rust.
- block-ciphers Collection of block cipher algorithms written in pure Rust. (AES, Blowfish, DES + 3DES, Kuznyechik, Magma, RC2, Twofish).
- stream-ciphers Collection of stream cipher algorithms.
Asymmetric Cryptography
RSA
- RSA RSA implementation in pure Rust. (PKCS1v1.5: Encryption & Decryption, Sign & Verify).
DH
- x25519-dalek Fast and efficient ed25519 signing and verification in Rust.
Hash Function
- BLAKE3 Official implementations of the BLAKE3 cryptographic hash function.
- hashes Collection of cryptographic hash functions written in pure Rust. (sha1, sha2, sha3, md4, md5, BLAKE2, RIPEMD-160, RIPEMD-320, GOST94, Grøstl, Streebog, Whirlpool).
- tiny-keccak A tiny implementation of SHA-3, SHAKE, Keccak, and sha3sum in rust.
- poseidon252 Starkad and Poseidon: New Hash Functions for Zero Knowledge Proof Systems.
Message Authentication Code
- MACs Message authentication code algorithms written in pure Rust. (CMAC, DAA, HMAC, PMAC).
Digital Signature
Digital Signature Scheme
- bls Aggregatable BLS sigantures. (w3f).
- bls-signatures BLS Signatures in Rust.
- ed25519-dalek Fast and efficient ed25519 signing and verification in Rust. (dalek)
- milagro_bls BLS12-381 cryptography using Apache Milagro.
- nisty NIST P-256 signatures for Cortex-M4 microcontrollers.
- signatures Cryptographic signature algorithms (e.g. ECDSA, Ed25519).
Threshold Signature & Multi Party Signatures
- multi-party-ecdsa Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital signature algorithm).
- multi-party-schnorr Rust implementation of multi-party Schnorr signatures over elliptic curves.
- multiproof-rs A rust implementation of Alexey Akhunov's multiproof algorithm.
- threshold_crypto A pairing-based threshold cryptosystem for collaborative decryption and signatures.
Rseudo Random Number Generator
- rand A Rust library for random number generation.
Zero Knowledge Proofs
- bellman zk-SNARK library. (zcash - librustzcash).
- bellman (matter-labs) Bellman zkSNARK library for community with Ethereum's BN256 support.
- bellman (filecoin-project) GPU parallel acceleration to the FFT and Multiexponentation algorithms in the groth16 prover.
- bulletproofs (Dalek) A pure-Rust implementation of Bulletproofs using Ristretto.
- bulletproofs (KZen-networks) Bulletproof Rust implementation for Aggregated Range Proofs over multiple elliptic curves.
- Dusk-Zerocaf Fast, efficient and bulletproof-friendly cryptographic operations.
- halo (prototype) a zkp system.
- marlin A Rust library for the Marlin preprocessing zkSNARK.
- merlin Composable proof transcripts for public-coin arguments of knowledge.
- OpenZKP pure Rust implementations of Zero-Knowledge Proof systems.
- rust-secp256k1-zkp ZKP fork for rust-secp256k1, adds wrappers for range proofs, pedersen commitments, etc.
- sonic a protocol for quickly verifiable, compact zero-knowledge proofs of arbitrary computations.
- Spartan High-speed zkSNARKs without trusted setup.
- zexe Rust library for decentralized private computation.
- ZoKrates A toolbox for zkSNARKs on Ethereum.
Homomorphic Encryption
Secure Multi-party Computation
white-city Network layer for MPC protocols.(include use Tendermint/TokioServer/RocketServer).
Theorem
Math
- fiat-crypto Formally verified arithmetic implementations for several elliptic curves and word sizes, extracted to Rust from specifications written using in the Coq theorem prover.
- nalgebra Linear algebra library for Rust.
- num A collection of numeric types and traits for Rust. (Bigint).
- rust-decimal A Decimal Implementation written in pure Rust suitable for financial calculations.
Elliptic Curve
- BLS12-381 Implementation of the BLS12-381 pairing-friendly elliptic curve group.
- bn Fork from zcash Pairing cryptography library in Rust. Barreto-Naehrig (BN).
- curve25519-dalek Group operations on Ristretto and Curve25519..
- Jubjub Implementation of the Jubjub elliptic curve group.
- k256 Pure Rust implementation of secp256k1 using complete Weierstrass formulas
- libsecp256k1-rs Pure Rust Implementation of secp256k1. (Wei Tang).
- p256 Pure Rust NIST P-256 implementation using complete Weierstrass formulas
- rust-secp256k1 Rust language bindings for Bitcoin secp256k1 library. (rust-bitcoin).
Attack Defense
Constant time
- subtle Pure-Rust traits and utilities for constant-time cryptographic implementations.
- subtle-encoding Hex, Bech32, and Base64 in constant-time(ish).
Zeroing memory
- Zeroize Securely zero memory while avoiding compiler optimizations.
Others
- Double Ratchet Pure Rust implementation of the Double Ratchet algorithm. (communicate securely).
- kms-secp256k1 Multi Party Key Management System (KMS) for Secp256k1 Elliptic curve based digital signatures.
- KDFs Collection of Key Derivation Functions written in pure Rust.
- librustzcash Rust-language assets for Zcash. (bellman-zk-SNARK, pairing-elliptic curves).
- molasses A Rust implementation of the Message Layer Security group messaging protocol.
- MLSAG Multilayered Linkable Spontaneous Anonymous Group, This particular version leverages Ristretto255.
- password-hashing Password-based key derivation functions. (PBKDF2, scrypt).
- opaque-ke A pure Rust implementation of the recent OPAQUE PAKE.
- PAKEs Password-Authenticated Key Agreement protocols. (SRP, spake2).
- rcmixed Mixed cryptosystem. inspired by PGP.
- RustySecrets A Rust implementation of threshold Shamir's secret sharing.
- schnorrkel Schnorr VRFs and signatures on the Ristretto group.
- vdf An implementation of Verifiable Delay Functions in Rust.
Contribute
Contributions are most welcome. Not so many constraints, only lowercase > uppercase, symbols > letters.
License
This work is licensed under a Creative Commons Attribution 4.0 International License.