An open API service indexing awesome lists of open source software.

awesome-cryptography

A curated list of cryptography resources and links.
https://github.com/sobolevn/awesome-cryptography

Last synced: 17 days ago
JSON representation

Frameworks and Libs

C

  • NaCl - High-speed library for network communication, encryption, decryption, signatures, etc.
  • themis - High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption). Ported on many languages and platforms, suitable for client-server infastructures.
  • crypto-algorithms - Basic implementations of standard cryptography algorithms, like AES and SHA-1.
  • libkcapi - Linux Kernel Crypto API User Space Interface Library.
  • libsodium - Modern and easy-to-use crypto library.
  • libtomcrypt - Fairly comprehensive, modular and portable cryptographic toolkit.
  • libVES.c - End-to-end encrypted sharing via cloud repository, secure recovery through a viral network of friends in case of key loss.
  • milagro-crypto-c - Small, self-contained and fast open source crypto library. It supports RSA, ECDH, ECIES, ECDSA, AES-GCM, SHA2, SHA3 and Pairing-Based Cryptography.
  • nettle - is a cryptographic library that is designed to fit easily in more or less any context: In crypto toolkits for object-oriented languages (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in kernel space.
  • OpenSSL - TLS/SSL and crypto library.
  • RHash - Great utility for computing hash sums.
  • tiny-AES128-C - Small portable AES128 in C.
  • wolfSSL - Small, fast, portable implementation of TLS/SSL for embedded devices to the cloud.
  • XKCP - source implementations of the cryptographic schemes defined by the Keccak team.
  • xxHash - Extremely fast hash algorithm.
  • libgcrypt - Cryptographic library developed as a separated module of GnuPG.
  • PolarSSL - PolarSSL makes it trivially easy for developers to include cryptographic and SSL/TLS capabilities in their (embedded) products, facilitating this functionality with a minimal coding footprint.
  • monocypher - small, portable, easy to use crypto library inspired by libsodium and TweetNaCl.

C++

  • Botan - Cryptography library written in C++20.
  • =nil; Crypto3 - Modern Cryptography Suite in C++17 (complete applied cryptography suite starting with block ciphers and ending with threshold cryptography, zk proof systems, etc).
  • cryptopp - Crypto++ Library is a free C++ class library of cryptographic schemes.
  • HElib - Software library that implements homomorphic encryption (HE).
  • Nettle - Low-level cryptographic library.
  • s2n - Implementation of the TLS/SSL protocols.

Clojure

  • buddy-core - Cryptographic Api.
  • pandect - Fast and easy-to-use Message Digest, Checksum and HMAC library for Clojure.
  • secrets.clj - A Clojure library designed to generate cryptographically strong random numbers suitable for managing data such as passwords, account authentication, security tokens, and related secrets.

Common Lisp

  • crypto-shortcuts - Collection of common cryptography functions.
  • ironclad - Collection of common crypto shortcuts.
  • trivial-ssh - SSH client library for Common Lisp (Built on libssh2).

C-sharp

  • PCLCrypto - Provides cryptographic APIs over algorithms implemented by the platform, including exposing them to portable libraries.
  • SecurityDriven.Inferno - .NET crypto done right.
  • StreamCryptor - Stream encryption & decryption with libsodium and protobuf.
  • Bouncy Castle - All-purpose cryptographic library.

Delphi

  • LockBox - LockBox 3 is a Delphi library for cryptography.
  • SynCrypto - Fast cryptographic routines (hashing and cypher), implementing AES, XOR, RC4, ADLER32, MD5, SHA1, SHA256 algorithms, optimized for speed.

Elixir

  • cipher - Elixir crypto library to encrypt/decrypt arbitrary binaries.
  • cloak - Cloak makes it easy to use encryption with Ecto.
  • elixir-rsa - :public_key cryptography wrapper for Elixir.
  • elixir_tea - TEA implementation in Elixir.
  • ex_crypto - Elixir wrapper for Erlang :crypto and :public_key modules. Provides sensible defaults for many crypto functions to make them easier to use.
  • exgpg - Use gpg from Elixir.
  • pot - Erlang library for generating one time passwords compatible with Google Authenticator.
  • siphash-elixir - Elixir implementation of the SipHash hash family.

Go

  • dkeyczar - Port of Google's Keyczar cryptography library to Go.
  • gocrypto - Example source code for the Practical Crypto with Go book.
  • kyber - Advanced crypto library for the Go language.
  • goThemis - Go wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

Haskell

Java

  • Flexiprovider - Powerful toolkit for the Java Cryptography Architecture.
  • Bouncy Castle - All-purpose cryptographic library. JCA provider, wide range of functions from basic helpers to PGP/SMIME operations.
  • GDH - Generalized Diffie-Hellman key exchange Java library for multiple parties built on top of the Vert.x framework.
  • Google Tink - A small crypto library that provides a safe, simple, agile and fast way to accomplish some common crypto tasks.
  • jbcrypt - jBCrypt is an implementation the OpenBSD Blowfish password hashing
  • Keycloak - Open Source Identity and Access Management For Modern Applications and Services.
  • pac4j - Security engine.
  • Password4j - A Java user-friendly cryptographic library for hashing and checking passwords with different Key derivation functions (KDFs) and Cryptographic hash functions (CHFs).
  • Project Kalium - Java binding to the Networking and Cryptography (NaCl) library with the awesomeness of libsodium.
  • scrypt - Pure Java implementation of the scrypt key derivation function and a JNI interface to the C implementations, including the SSE2 optimized version.
  • securitybuilder - Fluent Builder API for JCA/JSSE objects.
  • Java Themis - Java/Android wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

JavaScript

  • bcrypt-Node.js - Native implementation of bcrypt for Node.js.
  • closure-library - Google's common JavaScript library.
  • cryptico - Easy-to-use encryption system utilizing RSA and AES for JavaScript.
  • crypto-js - JavaScript library of crypto standards.
  • cryptojs - Provide standard and secure cryptographic algorithms for Node.js.
  • forge - Native implementation of TLS in JavaScript and tools to write crypto-based and network-heavy webapps.
  • javascript-crypto-library - JavaScript Crypto Library provides web developers with an extensive and efficient set of cryptographic functions.
  • js-nacl - Pure-JavaScript High-level API to Emscripten-compiled libsodium routines.
  • jsencrypt - JavaScript library to perform OpenSSL RSA Encryption, Decryption, and Key Generation.
  • JShashes - Fast and dependency-free cryptographic hashing library for Node.js and browsers (supports MD5, SHA1, SHA256, SHA512, RIPEMD, HMAC).
  • jsrsasign - The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation.
  • libsodium.js - libsodium compiled to pure JavaScript, with convenient wrappers.
  • libVES.js - End-to-end encrypted sharing via cloud repository, secure recovery through a viral network of friends in case of key loss.
  • micro-rsa-dsa-dh - Minimal implementation of older cryptography algorithms: RSA, DSA, DH, ElGamal.
  • milagro-crypto-js - MCJS is a standards compliant JavaScript cryptographic library with no external dependencies except for the random seed source. Compatible for Node.js and browser. It supports RSA, ECDH, ECIES, ECDSA, AES-GCM, SHA2, SHA3, Pairing-Based Cryptography and New Hope.
  • noble-ciphers - SIV, Salsa20, ChaCha, Poly1305 and FF1
  • noble-curves - to-curve, poseidon hash, schnorr, secp256k1, ed25519, ed448, p521, bn254, bls12-381 and others. Also 4kb noble-secp256k1, noble-ed25519
  • noble-hashes
  • noble-post-quantum - KEM, ML-DSA, SLH-DSA (CRYSTALS-Kyber, CRYSTALS-Dilithium, Sphincs+) and hybrids
  • OpenPGP.js - OpenPGP implementation for JavaScript.
  • PolyCrypt - Pure JS implementation of the WebCrypto API.
  • rusha - High-performance pure-javascript SHA1 implementation suitable for large binary data, reaching up to half the native speed.
  • sjcl - Stanford JavaScript Crypto Library.
  • TweetNaCl.js - A port of TweetNaCl / NaCl for JavaScript for modern browsers and Node.js.
  • asmCrypto - JavaScript implementation of popular cryptographic utilities with performance in mind.
  • cifre - Fast crypto toolkit for modern client-side JavaScript.
  • URSA - RSA public/private key OpenSSL bindings for Node.
  • jsThemis - JavaScript wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • node.bcrypt.js - bcrypt for Node.js.

Julia

  • Crypto.jl - Library that wraps OpenSSL, but also has pure Julia implementations for reference.
  • MbedTLS.jl - Wrapper around the mbed TLS and cryptography C libary.
  • Nettle.jl - Julia wrapper around nettle cryptographic hashing/
  • SHA.jl - Performant, 100% native-julia SHA1, SHA2-{224,256,384,512} implementation.

Lua

  • lua-lockbox - Collection of cryptographic primitives written in pure Lua.
  • LuaCrypto - Lua bindings to OpenSSL.

Objective-C

  • RNCryptor - CCCryptor (AES encryption) wrappers for iOS and Mac.
  • CocoaSecurity - AES, MD5, SHA1, SHA224, SHA256, SHA384, SHA512, Base64, Hex.
  • ObjectivePGP - ObjectivePGP is an implementation of OpenPGP protocol for iOS and macOS. OpenPGP is the most widely used email encryption standard.
  • ObjC Themis - ObjC wrapper on Themis for iOS and macOS. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

OCaml

  • Digestif - is a toolbox that implements various cryptographic primitives in C and OCaml.
  • ocaml-tls - TLS in pure OCaml.

PHP

  • halite - Simple library for encryption using libsodium.
  • libsodium-laravel - Laravel Package Abstraction using libsodium.
  • PHP Encryption - Library for encrypting data with a key or password in PHP.
  • TCrypto - TCrypto is a simple and flexible PHP 5.3+ in-memory key-value storage library.
  • PHP Themis - PHP wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

Python

  • cryptography - Python library which exposes cryptographic recipes and primitives.
  • cryptopy - Pure python implementation of cryptographic algorithms and applications.
  • bcrypt - Modern password hashing for your software and your servers.
  • charm - Framework for rapidly prototyping cryptosystems.
  • Crypto-Vinaigrette - Quantum resistant asymmetric key generation tool for digital signatures.
  • django-cryptography - Easily encrypt data in Django.
  • ecdsa - An easy-to-use implementation of ECC with support for ECDSA and ECDH.
  • hashids - Implementation of hashids in Python.
  • Privy - An easy, fast lib to correctly password-protect your data.
  • pycryptodome - Self-contained Python package of low-level cryptographic primitives.
  • PyElliptic - Python OpenSSL wrapper. For modern cryptography with ECC, AES, HMAC, Blowfish.
  • pynacl - Python binding to the Networking and Cryptography (NaCl) library.
  • pythemis - Python wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • paramiko - Python implementation of the SSHv2 protocol, providing both client and server functionality.

R

  • rscrypt - Package for a collection of scrypt cryptographic functions.

Ruby

  • bcrypt-ruby - Ruby binding for the OpenBSD bcrypt() password hashing algorithm, allowing you to easily store a secure hash of your users' passwords.
  • Ruby Themis - Ruby wrapper on Themis. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).

Rust

  • AEADs - Authenticated Encryption with Associated Data Algorithms: high-level encryption ciphers.
  • BLAKE3 - is official Rust and C implementations of the BLAKE3 cryptographic hash function.
  • botan-rs - Botan bindings for Rust.
  • cryptoballot - Cryptographically secure online voting.
  • dryoc - A pure-Rust, general purpose crypto library that implements libsodium primitives.
  • elliptic-curves - Collection of pure Rust elliptic curve implementations: NIST P-224, P-256, P-384, P-521, secp256k1, SM2.
  • formats - Cryptography-related format encoders/decoders: DER, PEM, PKCS, PKIX.
  • hashes - Collection of cryptographic hash functions written in pure Rust.
  • mundane - is a Rust cryptography library backed by BoringSSL that is difficult to misuse, ergonomic, and performant.
  • octavo - Highly modular & configurable hash & crypto library.
  • orion - is a cryptography library written in pure Rust. It aims to provide easy and usable crypto while trying to minimize the use of unsafe code.
  • password-hashes - Collection of password hashing algorithms, otherwise known as password-based key derivation functions, written in pure Rust.
  • proteus - Axolotl protocol implementation, without header keys, in Rust.
  • rage - is a simple, modern, and secure file encryption tool, using the age format.
  • recrypt - A pure-Rust library that implements cryptographic primitives for building a multi-hop Proxy Re-encryption scheme, known as Transform Encryption.
  • ring - Safe, fast, small crypto using Rust & BoringSSL's cryptography primitives.
  • ronkathon - Educational, mathematically transparent, well documentated cryptography in rust.
  • rust-crypto - Mostly pure-Rust implementation of various cryptographic algorithms.
  • rust-openssl - OpenSSL bindings for Rust.
  • rustls - Rustls is a new, modern TLS library written in Rust.
  • signatures - Cryptographic signature algorithms: DSA, ECDSA, Ed25519.
  • snow - Pure Rust implementation of Trevor Perrin’s Noise Protocol.
  • suruga - TLS 1.2 implementation in Rust.
  • webpki - Web PKI TLS X.509 certificate validation in Rust.
  • dalek cryptography - Fast yet safe mid-level API for ECC, Bulletproofs, and more.
  • ockam - is a Rust library for end-to-end encryption and mutual authentication.
  • sodiumoxide - Sodium Oxide: Fast cryptographic library for Rust (bindings to libsodium).

Scala

  • recrypt - Transform encryption library for Scala.
  • scrypto - Cryptographic primitives for Scala.
  • tsec - A type-safe, functional, general purpose security and cryptography library.

Scheme

  • crypto-tools - Useful cryptographic primitives for Chicken Scheme.
  • chicken-sodium - Bindings to libsodium crypto library for Chicken Scheme.
  • guile-ssh - libssh bindings for GNU Guile.
  • industria - Motley assortment of cryptographic primitives, OpenSSH, DNS.

Swift

  • CryptoSwift - Crypto related functions and helpers for Swift implemented in Swift programming language.
  • IDZSwiftCommonCrypto - Wrapper for Apple's CommonCrypto library written in Swift.
  • SweetHMAC - Tiny and easy to use Swift class to encrypt strings using HMAC algorithms.
  • Swift-Sodium - Swift interface to the Sodium library for common crypto operations for iOS and macOS.
  • SwiftThemis - Swift wrapper on Themis for iOS and macOS. High level crypto library for storing data (AES), secure messaging (ECC + ECDSA / RSA + PSS + PKCS#7) and session-oriented, forward secrecy data exchange (ECDH key agreement, ECC & AES encryption).
  • OpenSSL - Swift OpenSSL for macOS and Linux.
  • SwiftSSL - Elegant crypto toolkit in Swift.

Resources

Blogs

  • Charles Engelke's Blog - WebCrypto Blog Posts.
  • Root Labs rdist - Nate Lawson and his co-authors write on a variety of topics including hardware implementation, cryptographic timing attacks, DRM, and the Commodore 64.
  • Schneier on security - One of the oldest and most famous security blogs. Bruce covers topics from block cipher cryptanalysis to airport security.
  • Bristol Cryptography Blog - Official blog for the University of Bristol cryptography research group. It's a group blog, primarily targeted towards cryptographers and crypto students.
  • Salty Hash - Covers topics on encryption, data control, privacy, and security.

Mailing lists

  • Modern Crypto - Forums for discussing modern cryptographic practice.
  • randombit.net - List for general discussion of cryptography, particularly the technical aspects.

Web-sites

  • Applied Crypto Hardening - A lot ready to use best practice examples for securing web servers and more.
  • Cryptohack - A platform with lots of interactive cryptography challenges, similar to Cryptopals.
  • Eliptic Curve Calculator - simple form that allows to calculate elliptic curve public keys and signatures. Features include ability to create custom curves and different signature types
  • IACR - The International Association for Cryptologic Research is a non-profit scientific organization whose purpose is to further research in cryptology and related fields.
  • Subreddit of Cryptography - This subreddit is intended for links and discussions surrounding the theory and practice of strong cryptography.
  • TikZ for Cryptographers - A collection of block diagrams of common cryptographic functions drawn in TikZ to be used in research papers and presentations written in LaTeX.
  • Cryptocurrencies Dashboard - A dashboard of most active cryptocurrencies discussed on Reddit.
  • Learn Cryptography - Dedicated to helping people understand how and why the cryptographic systems they use everyday without realizing work to secure and protect their privacy.

Web-tools

  • factordb.com - Factordb.com is tool used to store known factorizations of any number.
  • keybase.io - Keybase maps your identity to your public keys, and vice versa.
  • Cryptolab - is a set of cryptography related tools.
  • CyberChef - a web app for encryption, encoding, compression, and data analysis.

Theory

Algorithms

  • 3DES - Symmetric-key block cipher (or Triple Data Encryption Algorithm (TDEA or Triple DEA), which applies the Data Encryption Standard (DES) cipher algorithm three times to each data block.
  • AES - Symmetric-key block cipher algorithm and U.S. government standard for secure and classified data encryption and decryption (also known as Rijndael).
  • Blowfish - Symmetric-key block cipher, designed in 1993 by Bruce Schneier. Notable features of the design include key-dependent S-boxes and a highly complex key schedule.
  • DH - A method of exchanging cryptographic keys securely over a public channel. Unlike RSA, the Diffie-Hellman Key Exchange is not encryption, and is only a way for two parties to agree on a shared secret value. Since the keys generated are completely pseudo-random, DH key exchanges can provide forward secrecy (https://en.wikipedia.org/wiki/Forward_secrecy).
  • ECC - Public-key cryptosystems based on the algebraic structure of elliptic curves over finite fields.
  • RSA - One of the first practical public-key cryptosystems and is widely used for secure data transmission. In RSA, this asymmetry is based on the practical difficulty of factoring the product of two large prime numbers, the factoring problem.
  • MD5 - Widely used hash function producing a 128-bit hash value. MD5 was initially designed to be used as a cryptographic hash function, but it has been found to suffer from extensive vulnerabilities. It can still be used as a checksum to verify data integrity, but only against unintentional corruption.
  • SHA1 - Cryptographic hash function designed by the NSA. SHA-1 produces a 160-bit hash value known as a message digest. SHA-1 is no longer considered secure against well-funded opponents.
  • SHA2 - Set of hash functions designed by the NSA. SHA-256 and SHA-512 are novel hash functions computed with 32-bit and 64-bit words, respectively. They use different shift amounts and additive constants, but their structures are otherwise virtually identical, differing only in the number of rounds.