User Experience on mobile might not be great yet, but I'm working on it.

Your first time on this page? Allow me to give some explanations.

Awesome Cryptography

A curated list of cryptography resources and links.

Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.

Last Update: Feb. 27, 2021, 6:12 p.m.

Thank you sobolevn & contributors
View Topic on GitHub:
sobolevn/awesome-cryptography

Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.

Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.

Symmetric encryption

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).

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.

Asymmetric encryption

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.

Transform Encryption

Transform encryption uses three mathematically related keys: one to encrypt plaintext to a recipient, a second to decrypt the ciphertext, and a third to transform ciphertext encrypted to one recipient so it can be decrypted by a different recipient.

Hash functions

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.

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.

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.

Articles

Books

The book covers many constructions for different tasks in cryptography.

Crypto 101 is an introductory course on cryptography.

Learn to build cryptographic protocols that work in the real world.

This book is intended as a reference for professional cryptographers.

Introductory-level treatment of cryptography written from a modern, computer science perspective.

Developer-friendly book on modern cryptography (hashes, MAC codes, symmetric and asymmetric ciphers, key exchange, elliptic curves, digital signatures) with lots of code examples.

This book teaches you applied cryptographic techniques to understand and apply security at every level of your systems and applications.

There is an extraordinary textbook written by Ross Anderson, professor of computer security at University of Cambridge.

A Practical Introduction to Modern Encryption by Jean-Philippe Aumasson.

This book is a digest of the history of cryptography, covering both ancient times, and newer cryptography methods. There are exercises at the end and the solution of those was rewarded with $10.000.

This book provides a comprehensive guide to the various topics of the computer and internet security.

Often overlooked, this book is a boon for beginners to the field. It contains plenty of exercises at the end of each chapter, aimed at reinforcing concepts and cementing ideas.

Courses

Cryptography is present in everyday life, from paying with a credit card to using the telephone. Learn all about making and breaking puzzles in computing.

This talk will cover crypto vulnerabilities in widely-deployed systems and how the smallest oversight resulted in catastrophe.

A practical oriented course in Cryptography by University of Maryland College Park.

This course explains the inner workings of cryptographic primitives and how to correctly use them. Students will learn how to reason about the security of cryptographic constructions and how to apply this knowledge to real-world applications.

The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems.

This online course we will cover how cryptography is the cornerstone of security, and how through its use of different encryption methods, such as ciphers, and public or private keys, you can protect private or sensitive information from unauthorized access.

Practical Aspects of Modern Cryptography, Winter 2006 University of Washington CSE.

Introduction to Modern Cryptography, Using Cryptography in Practice and at Google, Proofs of Security and Security Definitions and A Special Topic in Cryptography.

Other lists

A curated list of cryptography papers, articles, tutorials and howtos.

961
90
98d
n/a

✨ Awesome - A curated list of amazing Homomorphic Encryption libraries, software and resources

209
15
46d
n/a

Standalone

Safely store secrets in Git/Mercurial/Subversion

5.67K
313
48d
MIT

Certbot is EFF's tool to obtain certs from Let's Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol.

27.69K
3.05K
15d
n/a

Coherence is cryptographic server for modern web apps

13
0
6m
GPL-3.0

Multi-platform transparent client-side encryption of your files in the cloud

5.1K
438
4d
GPL-3.0

Secure end-to-end encrypted file sharing over ssh; forked from openssh.

58
10
1y 7m
n/a

An engine to make Tor network your default gateway

1K
229
52d
n/a

Simple and flexible tool for managing secrets

6.86K
402
5m
MPL-2.0

A cross platform file encryption utility. Encrypted files are portable across all supported operating systems and processors. [BSD]

A complete and free implementation of the OpenPGP standard. [GPL]

ves

End-to-end encrypted sharing via cloud repository, secure recovery through a viral network of friends in case of key loss.

Git

Transparent file encryption in git

5.36K
335
10m
GPL-3.0

Bash-tool to store your private data inside a git repository.

Playgrounds

A simple web tool to play and learn basic concepts of cryptography like, hashing, symmetric, asymmetric, zkp etc.

C

Basic implementations of standard cryptography algorithms, like AES and SHA-1.

1.08K
477
5y 10m
n/a

A modern, portable, easy to use crypto library.

9.07K
1.41K
8d
n/a

LibTomCrypt is a fairly comprehensive, modular and portable cryptographic toolkit that provides developers with a vast array of well known published block ciphers, one-way hash functions, chaining modes, pseudo-random number generators, public key cryptography and a plethora of other routines.

1.07K
344
40d
Unlicense

VESvault End-to-End Encryption API: Encrypt Everything Without Fear of Losing the Key

26
3
21d
GPL-3.0

Apache milagro (Incubating)

18
9
13d
Apache-2.0

TLS/SSL and crypto library

14.85K
6.62K
12d
Apache-2.0

Great utility for computing hash sums

346
94
15d
0BSD

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

Small portable AES128/192/256 in C

2.42K
915
12d
Unlicense

wolfSSL (formerly CyaSSL) is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!

1.06K
435
9d
GPL-2.0

Extremely fast non-cryptographic hash algorithm

4.87K
469
18d
n/a

Cryptographic library developed as a separated module of GnuPG.

small, portable, easy to use crypto library inspired by libsodium and TweetNaCl.

High-speed library for network communication, encryption, decryption, signatures, etc.

Another crypto implementation for C. Apache 2.0

C++

free C++ class library of cryptographic schemes

2.67K
817
6d
n/a

An Implementation of homomorphic encryption

182
54
5m
Apache-2.0

s2n : an implementation of the TLS/SSL protocols

3.91K
547
4d
Apache-2.0

Cryptography library written in C++11.

A low-level cryptographic library. [LGPL]

C-sharp

libsodium for .NET - A secure cryptographic library

332
95
3y 104d
MIT

Platform crypto for portable libraries

207
51
46d
MS-PL

.NET crypto done right. Professionally audited.

496
42
94d
n/a

Stream encryption & decryption with libsodium and protobuf

111
25
3y 11m
MIT

All-purpose cryptographic library.

The .NET Framework implementations of many standard cryptographic algorithms.

Clojure

Clj-crypto is a wrapper for Bouncy Castle which allows you to easily use cryptography in your clojure app.

26
15
4y 111d
n/a

Fast and easy-to-use Message Digest, Checksum and HMAC library for Clojure

213
11
15d
MIT

A Clojure library designed to generate cryptographically strong random numbers suitable for managing data such as passwords, account authentication, security tokens, and related secrets.

24
0
4m
MIT

Common Lisp

Collection of common cryptography functions

19
0
4m
Zlib

An SSH client library for Common Lisp (Built on libssh2)

33
9
1y 4m
n/a

Collection of common crypto shortcuts.

Delphi

Cryptographic library for Embarcadero Delphi and potentially for FPC as well

76
24
14d
Apache-2.0

Synopse mORMot ORM/SOA/MVC framework

600
272
4d
n/a

LockBox 3 is a Delphi library for cryptography.

Delphi][FPC]` Open-source crypto library written in Delphi, compatible with Free Pascal Compiler. MD5, SHA1, SHA256, CRC32, Jenkins-One-At-Time, HMAC, PBKDF1, PBKDF2, AES, DES, RC4, RC5, Salsa20.

Elixir

Elixir crypto library to encrypt/decrypt arbitrary binaries

55
24
1y 7m
MIT

Elixir encryption library designed for Ecto

407
40
22d
MIT

Password hashing specification for the Elixir programming language

1.16K
65
47d
n/a

Erlang public_key cryptography wrapper for Elixir

30
1
1y 100d
MIT

TEA implementation in Elixir

2
1
5y 10m
MIT

Wrapper around the Erlang crypto module for Elixir.

92
28
1y 17d
MIT

gpg interface

16
4
5y 118d
MIT

POT is an Erlang library for generating Google Authenticator compatible one time passwords

193
25
5m
MIT

An Elixir implementation of the SipHash cryptographic hash family

15
0
2y 7m
MIT

Erlang

Functions for computation of message digests, and functions for encryption and decryption.

Provides functions to handle public-key infrastructure.

Go

cryptographically secure online voting

172
24
9m
n/a

Advanced crypto library for the Go language

406
106
94d
MPL-2.0

Port of Google's Keyczar cryptography library to Go

112
16
9m
n/a

Example source code for the Practical Crypto with Go book.

136
31
5y 10m
ISC

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

Official Website Resources.

Haskell

Cryptol: The Language of Cryptography

935
99
10d
n/a

OpenSSL binding for Haskell

20
42
1y 43d
n/a

Haskell bindings to Colin Percival's scrypt implementation.

16
6
7y 43d
n/a

Haskell repository of cryptographic primitives.

Haxe

Haxe Cryptography Library.

JavaScript

JavaScript Cryptographic Library with performance in mind.

573
174
1y 31d
MIT

Native implementation of bcrypt for NodeJS

589
73
3y 8m
n/a

Fast crypto toolkit for modern client-side JavaScript

122
9
7y 7m
n/a

Google's common JavaScript library

3.7K
935
5m
Apache-2.0

An easy-to-use encryption system utilizing RSA and AES for javascript.

1.11K
334
8y 7m
n/a

JavaScript library of crypto standards.

10.71K
1.62K
101d
n/a

Following googlecode project crypto-js, provide standard and secure cryptographic algorithms for NodeJS. Support MD5, SHA-1, SHA-256, RC4, Rabbit, AES, DES, PBKDF2, HMAC, OFB, CFB, CTR, CBC, Base64

312
69
8y 7m
n/a

A native implementation of TLS in Javascript and tools to write crypto-based and network-heavy webapps

3.85K
603
102d
n/a

The JavaScript Crypto Library provides web developers with an extensive and efficient set of cryptographic functions. The library aims to obtain maximum execution speed while preserving modularity and reusability. The library is released as open source under a BDS license.

276
46
5y 50d
BSD-3-Clause

Pure-Javascript High-level API to Emscripten-compiled libsodium routines.

465
59
2y 102d
n/a

A Javascript library to perform OpenSSL RSA Encryption, Decryption, and Key Generation.

4.88K
1.61K
15d
n/a

Fast and dependency-free cryptographic hashing library for node.js and browsers (supports MD5, SHA1, SHA256, SHA512, RIPEMD, HMAC)

617
137
86d
BSD-3-Clause

The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES JSON Web Signature/Token in pure JavaScript.

2.54K
526
9d
n/a

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

libsodium compiled to Webassembly and pure JavaScript, with convenient wrappers.

656
103
21d
n/a

VESvault End-to-End Encryption API: Encrypt Everything Without Fear of Losing the Key

5
1
98d
GPL-3.0

Apache milagro

6
5
1y 5m
Apache-2.0

Fastest implementation of BLS12-381 in a scripting language. High-security, auditable, 0-dependency aggregated signatures / zk-snarks over pairing-friendly curve

68
17
13d
MIT

Fastest JS implementation of ed25519 / ristretto255. High-security, auditable, 0-dependency EDDSA signatures and public keys

74
14
28d
MIT

Noble RIPEMD160. High-security, easily auditable, 0-dep, 1-file hash function

13
1
38d
MIT

Fastest JS implementation of secp256k1. High-security, auditable, 0-dependency, 1-file ECDSA & Schnorr signatures.

72
9
28d
MIT

bcrypt for NodeJs

5.73K
410
25d
MIT

OpenPGP implementation for JavaScript

4.65K
699
11d
LGPL-3.0

PolyCrypt - A pure JS implementation of the WebCrypto API

264
22
6y 10m
n/a

High-performance pure-javascript SHA1 implementation suitable for large binary data, reaching up to half the native speed.

267
37
2y 9m
MIT

Stanford Javascript Crypto Library

6.47K
869
1y 7m
n/a

URSA - RSA public/private key OpenSSL bindings for Node.js

610
148
2y 9m
n/a

Transform encryption library, a variant of proxy re-encryption, for encrypting to users or groups, and easily adding strong data controls to NodeJS apps.

Transform encryption library, a variant of proxy re-encryption, for easily managing end-to-end encryption securely in the browser.

Java

Generalized Diffie-Hellman key exchange Java library built on top of the Vert.x framework

30
5
2y 9m
MIT

Easy-to-use crypto toolkit

1.1K
159
1y 9m
Apache-2.0

Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

11.07K
912
11d
Apache-2.0

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

Open Source Identity and Access Management For Modern Applications and Services

8.22K
3.33K
23d
Apache-2.0

A system for distributing and managing secrets

2.36K
194
11d
Apache-2.0

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

1.97K
566
5d
Apache-2.0

Java implementation of scrypt

421
154
7y 9m
Apache-2.0

Fluent builders with typesafe API for the JCA

37
3
2y 4m
Apache-2.0

Performs authentication, authorization, cryptography and session management.

All-purpose cryptographic library and JCA provider offering a wide range of functions, from basic helpers to PGP/SMIME operations.

Powerful toolkit for the Java Cryptography Architecture.

jBCrypt is an implementation the OpenBSD Blowfish password hashing

Java binding to the Networking and Cryptography (NaCl) library with the awesomeness of libsodium.

Julia

A library that wraps OpenSSL, but also has pure Julia implementations for reference.

6
9
5y 11m
n/a

Wrapper around mbedtls

24
37
60d
n/a

Julia wrapper around nettle cryptographic hashing/encryption library providing MD5, SHA1, SHA2 hashing and HMAC functionality, as well as AES encryption/decryption

33
30
11m
n/a

A performant, 100% native-julia SHA1, SHA2, and SHA3 implementation

26
26
1y 8m
n/a

Lua

A collection of cryptographic primitives written in pure Lua

290
56
46d
MIT

Fork of LuaCrypto, which enables encryption and decryption through OpenSSL

81
60
7y 5m
MIT

Objective-C

Encrypt/Decrypt: AES. Hash: MD5, SHA(SHA1, SHA224, SHA256, SHA384, SHA512). Encode/Decode: Base64, Hex.

1.1K
196
6y 9m
MIT

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

OpenPGP library for iOS and macOS

557
88
99d
n/a

CCCryptor (AES encryption) wrappers for iOS and Mac in Swift. -- For ObjC, see RNCryptor/RNCryptor-objc

3.23K
497
1y 10m
MIT

PHP

Laravel integration for libsodium

20
4
4y 12m
MIT

Simple Encryption in PHP.

3.23K
276
62d
n/a

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

TCrypto is a simple and flexible PHP 5.3+ in-memory key-value storage library

53
10
4y 6m
n/a

A simple library for encryption using libsodium.

Python

Modern(-ish) password hashing for your software and your servers

711
99
10d
Apache-2.0

Charm: A Framework for Rapidly Prototyping Cryptosystems

360
123
67d
LGPL-3.0

Quantum-resistent asymmetric key generation tool for digital signatures.

10
0
1y 9m
MIT

Easily encrypt data in Django

195
32
1y 19d
BSD-3-Clause

Implementation of hashids (http://hashids.org) in Python. Compatible with Python 2 and Python 3

1.18K
86
5m
MIT

An easy, fast lib to correctly password-protect your data

230
14
3y 38d
n/a

A self-contained cryptographic library for Python

1.49K
276
19d
n/a

Python OpenSSL wrapper. For modern cryptography with ECC, AES, HMAC, Blowfish, ...

112
54
3y 10m
n/a

Python binding to the Networking and Cryptography (NaCl) library

759
167
15d
Apache-2.0

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

A package designed to expose cryptographic primitives and recipes to Python developers.

Pure python implmentation of cryptographic algorithms and applications.

Python implementation of the SSHv2 protocol, providing both client and server functionality.

R

scrypt cryptographic functions for R

27
13
1y 6m
BSD-2-Clause

Ruby

bcrypt-ruby is a Ruby binding for the OpenBSD bcrypt() password hashing algorithm, allowing you to easily store a secure hash of your users' passwords.

1.7K
264
16d
n/a

Ruby FFI binding to the Networking and Cryptography (NaCl) library (a.k.a. libsodium)

902
67
10m
MIT

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

Rust

Mundane is a Rust cryptography library backed by BoringSSL that is difficult to misuse, ergonomic, and performant (in that order).

825
30
11m
MIT

Highly modular & configurable hash & crypto library

131
17
3y 4m
MIT

Axolotl Protocol Implementation

390
30
5m
GPL-3.0

A set of cryptographic primitives for building a multi-hop Proxy Re-encryption scheme, known as Transform Encryption.

79
11
51d
AGPL-3.0

Safe, fast, small crypto using Rust

2.13K
370
17d
n/a

A (mostly) pure-Rust implementation of various cryptographic algorithms.

1.01K
237
4y 5m
n/a

OpenSSL bindings for Rust

735
460
12d
n/a

A modern TLS library in Rust

2.4K
241
7d
n/a

Sodium Oxide: Fast cryptographic library for Rust (bindings to libsodium)

590
137
30d
n/a

[INACTIVE] TLS 1.2 implementation in Rust

119
8
5y 42d
MIT

WebPKI X.509 Certificate Validation in Rust

303
100
10d
n/a

Scala

Transform encryption library for Scala

22
3
23d
AGPL-3.0

Cryptographic primitives for Scala

173
45
103d
n/a

Type-safe general-cryptography library - https://jmcardon.github.io/tsec/

336
43
72d
MIT

Swift

CryptoSwift is a growing collection of standard and secure cryptographic algorithms implemented in Swift

8.3K
948
69d
n/a

A wrapper for Apple's Common Crypto library written in Swift.

449
72
7m
MIT

Swift OpenSSL for OS X and Linux

38
22
4y 110d
MIT

A tiny and easy to use Swift class to encrypt strings using HMAC algorithms.

39
7
4y 4m
MIT

Safe and easy to use crypto for iOS and macOS

397
144
47d
ISC

An Elegant crypto toolkit in Swift.

182
21
5y 59d
MIT

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

1.22K
100
5d
Apache-2.0

Blogs

Official blog for the University of Bristol cryptography research group. It's a group blog, primarily targeted towards cryptographers and crypto students.

Nate Lawson and his co-authors write on a variety of topics including hardware implementation, cryptographic timing attacks, DRM, and the Commodore 64.

Covers topics on encryption, data control, privacy, and security.

One of the oldest and most famous security blogs. Bruce covers topics from block cipher cryptanalysis to airport security.

Mailing lists

Cryptography" is a low-noise moderated mailing list devoted to cryptographic technology and its political impact.

Forums for discussing modern cryptographic practice.

List for general discussion of cryptography, particularly the technical aspects.

Web-tools

Easy to use tools for analysis and code-breaking of the most frequent ciphers, including Vigenère, Beaufort, Keyed Caesar, Transposition Ciphers, etc.

is a set of cryptography related tools.

Great variety of ciphers, encryption methods and analysis tools are introduced, often together with illustrated examples.

a web app for encryption, encoding, compression, and data analysis.

Factordb.com is tool used to store known factorizations of any number.

Secure groups, files, and chat for everyone! ![Open-Source Software][OSS Icon] ![Freeware][Freeware Icon]

Web-sites

A lot ready to use best practice examples for securing web servers and more.

Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography.

A platform with lots of interactive cryptography challenges, similar to Cryptopals.

A series of applied cryptography challenges, starting from very basic challenges, such as hex to base 64 challanges, and gradually increasing the difficulty up to abstract algebra.

The International Association for Cryptologic Research is a non-profit scientific organization whose purpose is to further research in cryptology and related fields.

Dedicated to helping people understand how and why the cryptographic systems they use everyday without realizing work to secure and protect their privacy.

This subreddit is intended for links and discussions surrounding the theory and practice of strong cryptography.

This specification describes a JavaScript API for performing basic cryptographic operations in web applications, such as hashing, signature generation and verification, and encryption and decryption.