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: Dec. 3, 2020, 12:14 a.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.

932
87
11d
n/a

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

175
15
17d
n/a

Standalone

Safely store secrets in Git/Mercurial/Subversion

5.54K
312
14d
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.41K
3K
6d
n/a

Coherence is cryptographic server for modern web apps

13
0
100d
GPL-3.0

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

4.77K
420
1d
GPL-3.0

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

57
10
1y 4m
n/a

An engine to make Tor network your default gateway

943
216
26d
n/a

Simple and flexible tool for managing secrets

5.64K
360
80d
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.16K
321
7m
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.02K
461
5y 7m
n/a

A modern, portable, easy to use crypto library.

8.81K
1.39K
9d
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.03K
338
96d
Unlicense

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

24
3
15d
GPL-3.0

Apache milagro (Incubating)

17
9
4m
Apache-2.0

TLS/SSL and crypto library

14.26K
6.37K
4d
Apache-2.0

Great utility for computing hash sums

335
93
4d
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.16K
92
2d
Apache-2.0

Small portable AES128/192/256 in C

2.3K
885
5m
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!

993
413
8d
GPL-2.0

Extremely fast non-cryptographic hash algorithm

4.68K
441
7d
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.53K
782
3d
n/a

An Implementation of homomorphic encryption

165
52
92d
Apache-2.0

s2n : an implementation of the TLS/SSL protocols

3.86K
534
0d
Apache-2.0

Cryptography library written in C++11.

A low-level cryptographic library. [LGPL]

C-sharp

libsodium for .NET - A secure cryptographic library

326
94
3y 17d
MIT

Platform crypto for portable libraries

206
50
10d
MS-PL

.NET crypto done right. Professionally audited.

486
42
7d
n/a

Stream encryption & decryption with libsodium and protobuf

108
26
3y 8m
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 24d
n/a

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

209
12
4y 44d
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
57d
MIT

Common Lisp

Collection of common cryptography functions

18
0
54d
Zlib

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

30
8
1y 33d
n/a

Collection of common crypto shortcuts.

Delphi

Automatically exported from code.google.com/p/delphidec

56
18
32d
Apache-2.0

Synopse mORMot ORM/SOA/MVC framework

585
260
9d
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 4m
MIT

Elixir encryption library designed for Ecto

395
40
44d
MIT

Password hashing specification for the Elixir programming language

1.14K
64
9m
n/a

Erlang public_key cryptography wrapper for Elixir

30
1
1y 13d
MIT

TEA implementation in Elixir

2
1
5y 7m
MIT

Wrapper around the Erlang crypto module for Elixir.

92
27
9m
MIT

gpg interface

16
4
5y 31d
MIT

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

186
24
77d
MIT

An Elixir implementation of the SipHash cryptographic hash family

15
0
2y 4m
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

169
23
6m
n/a

Advanced crypto library for the Go language

390
100
7d
MPL-2.0

Port of Google's Keyczar cryptography library to Go

112
16
6m
n/a

Example source code for the Practical Crypto with Go book.

132
29
5y 7m
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.16K
92
2d
Apache-2.0

Official Website Resources.

Haskell

Cryptol: The Language of Cryptography

925
98
9d
n/a

OpenSSL binding for Haskell

20
39
10m
n/a

Haskell bindings to Colin Percival's scrypt implementation.

16
6
6y 10m
n/a

Haskell repository of cryptographic primitives.

Haxe

Haxe Cryptography Library.

JavaScript

JavaScript Cryptographic Library with performance in mind.

573
174
10m
MIT

Native implementation of bcrypt for NodeJS

587
73
3y 6m
n/a

Fast crypto toolkit for modern client-side JavaScript

122
9
7y 4m
n/a

Google's common JavaScript library

3.7K
935
91d
Apache-2.0

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

1.09K
327
8y 4m
n/a

JavaScript library of crypto standards.

10.29K
1.57K
14d
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

308
68
8y 4m
n/a

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

3.75K
585
15d
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.

273
46
4y 10m
BSD-3-Clause

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

462
57
2y 15d
n/a

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

4.71K
1.52K
2y 5m
n/a

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

607
128
6m
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.46K
512
10d
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.16K
92
2d
Apache-2.0

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

614
94
51d
n/a

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

5
1
70d
GPL-3.0

Apache milagro

6
5
1y 63d
Apache-2.0

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

64
13
25d
MIT

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

60
11
36d
MIT

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

11
1
10m
MIT

Fastest JS implementation of secp256k1. High-security, easily auditable, 0-dependency, 1-file ECDSA signatures and public keys.

54
6
36d
MIT

bcrypt for NodeJs

5.6K
405
5m
MIT

OpenPGP implementation for JavaScript

4.54K
682
16d
LGPL-3.0

PolyCrypt - A pure JS implementation of the WebCrypto API

265
22
6y 7m
n/a

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

264
36
2y 6m
MIT

Stanford Javascript Crypto Library

6.42K
864
1y 4m
n/a

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

609
146
2y 6m
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 6m
MIT

Easy-to-use crypto toolkit

1.1K
159
1y 6m
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.

10.8K
884
22d
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.16K
92
2d
Apache-2.0

Open Source Identity and Access Management For Modern Applications and Services

7.62K
3.16K
6d
Apache-2.0

A system for distributing and managing secrets

2.32K
192
28d
Apache-2.0

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

1.92K
553
8d
Apache-2.0

Java implementation of scrypt

415
152
7y 6m
Apache-2.0

Fluent builders with typesafe API for the JCA

35
3
2y 47d
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.

7
9
5y 8m
n/a

Wrapper around mbedtls

21
36
37d
n/a

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

27
32
8m
n/a

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

25
25
1y 5m
n/a

Lua

A collection of cryptographic primitives written in pure Lua

283
53
8m
MIT

Fork of LuaCrypto, which enables encryption and decryption through OpenSSL

79
59
7y 71d
MIT

Objective-C

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

1.09K
196
6y 7m
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.16K
92
2d
Apache-2.0

OpenPGP library for iOS and macOS

548
83
12d
n/a

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

3.22K
494
1y 7m
MIT

PHP

Laravel integration for libsodium

19
4
4y 9m
MIT

Simple Encryption in PHP.

3.18K
266
9m
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.16K
92
2d
Apache-2.0

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

52
10
4y 116d
n/a

A simple library for encryption using libsodium.

Python

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

686
92
9d
Apache-2.0

Charm: A Framework for Rapidly Prototyping Cryptosystems

345
119
10d
LGPL-3.0

Quantum-resistent asymmetric key generation tool for digital signatures.

9
0
1y 6m
MIT

Easily encrypt data in Django

182
30
9m
BSD-3-Clause

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

1.15K
85
87d
MIT

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

225
14
2y 10m
n/a

A self-contained cryptographic library for Python

1.4K
263
31d
n/a

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

111
51
3y 7m
n/a

Python binding to the Networking and Cryptography (NaCl) library

736
157
4d
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.16K
92
2d
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

23
13
1y 116d
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.68K
260
59d
n/a

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

893
69
7m
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.16K
92
2d
Apache-2.0

Rust

Highly modular & configurable hash & crypto library

131
17
3y 51d
MIT

Axolotl Protocol Implementation

382
30
87d
GPL-3.0

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

73
10
56d
AGPL-3.0

Safe, fast, small crypto using Rust

1.98K
344
3d
n/a

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

992
236
4y 88d
n/a

OpenSSL bindings for Rust

706
439
4d
n/a

A modern TLS library in Rust

2.19K
216
11d
n/a

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

567
129
5d
n/a

[INACTIVE] TLS 1.2 implementation in Rust

118
8
4y 10m
MIT

WebPKI X.509 Certificate Validation in Rust

268
91
22d
n/a

Scala

Transform encryption library for Scala

22
3
10d
AGPL-3.0

Cryptographic primitives for Scala

171
45
16d
n/a

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

330
44
6m
MIT

Swift

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

8.15K
937
2d
n/a

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

446
71
4m
MIT

Swift OpenSSL for OS X and Linux

38
22
4y 23d
MIT

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

39
7
4y 45d
MIT

Safe and easy to use crypto for iOS and macOS

388
135
9d
ISC

An Elegant crypto toolkit in Swift.

184
21
4y 11m
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.16K
92
2d
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.