diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..dd44d2b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,16 @@ +# Contributing + +Your contributions are always welcome! + +## Guidelines + +* Add one link per Pull Request. +* Add the link: `* [project-name](http://example.com/) - A short description ends with a period.` + * Keep descriptions concise. +* Add a section if needed. + * Add the section description. + * Add the section title to Table of Contents. +* Search previous suggestions before making a new one, as yours may be a duplicate. +* Check your spelling and grammar. +* Remove any trailing whitespace. +* Send a Pull Request with the reason why the library is awesome. diff --git a/README.md b/README.md index 61589a4..afc9d8c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,190 @@ -# awesome-cryptography +# Awesome Cryptography [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) + A curated list of cryptography resources and links -## TODO: add links +- [Theory](#theory) + - [Books](#books) + - [Courses](#courses) + - [Articles](#articles) +- [Frameworks and Libs](#frameworks-and-libs) + - [C](#c) + - [C++](#cpp) + - [C#](#c-sharp) + - [Clojure](#clojure) + - [Common Lisp](#common-lisp) + - [Delphi](#delphi) + - [Elixir](#elixir) + - [Golang](#go) + - [Haskell](#haskell) + - [Haxe](#hexe) + - [JavaScript](#javascript) + - [Java](#java) + - [Julia](#julia) + - [Lua](#lua) + - [Objective-C](#objective-c) + - [PHP](#php) + - [Python](#python) + - [Ruby](#ruby) + - [Rust](#rust) + - [Scala](#scala) + - [Swift](#swift) +- [Resources](#resources) + - [Websites](#websites) + - [Twitter](#twitter) +- [Web Apps](#web-apps) +- [Contributing](#contributing) + - [...]() + +- - - + +# Theory +#### Books +* [An Introduction to Mathematical Cryptography](http://www.math.brown.edu/~jhs/MathCryptoHome.html) - is an introduction to modern cryptography. +* [Security Engineering](http://www.cl.cam.ac.uk/~rja14/book.html) - There is an extraordinary textbook written by Ross Anderson, professor of computer security at University of Cambridge. +* [OpenSSL Cookbook](https://www.feistyduck.com/library/openssl-cookbook/) - The book about OpenSSL. +* [Crypto101](https://www.crypto101.io/) - Crypto 101 is an introductory course on cryptography. +* [Handbook of Applied Cryptography](http://cacr.uwaterloo.ca/hac/index.html) - This book is intended as a reference for professional cryptographers +* [Introduction to Modern Cryptography](http://www.cs.umd.edu/~jkatz/imc.html) - is an introductory-level treatment of cryptography written from a modern, computer science perspective. +* [The Cryptoparty Handbook](https://unglue.it/work/141611/) - This book provides a comprehensive guide to the various topics of the computer and internet security +* [Cryptography Engineering](https://www.schneier.com/books/cryptography_engineering/) - Learn to build cryptographic protocols that work in the real world + +#### Courses +* [Cryptography I](https://www.coursera.org/learn/crypto) +* [Cryptography - Stanford University](http://online.stanford.edu/course/cryptography) +* [Cybrary Cryptography](https://www.cybrary.it/course/cryptography/) +* [Applied Cryptography](https://www.udacity.com/course/applied-cryptography--cs387) + + +# Frameworks and Libs +#### C +* [cryptlib](http://www.cryptlib.com/) - is an open source cross-platform software security toolkit library +* [retter](https://github.com/maciejczyzewski/retter) - a collection of hash functions, ciphers, tools and libraries. +* [xxHash](https://github.com/Cyan4973/xxHash) - Extremely fast hash algorithm +* [libtomcrypt](https://github.com/libtom/libtomcrypt) - is a fairly comprehensive, modular and portable cryptographic toolkit +* [libgcrypt](http://directory.fsf.org/wiki/Libgcrypt) - is a cryptographic library developed as a separated module of GnuPG. +* [NaCl](https://nacl.cr.yp.to/) - high-speed library for network communication, encryption, decryption, signatures, etc. +* [tiny-AES128-C](https://github.com/kokke/tiny-AES128-C) - Small portable AES128 in C. +* [RHash](https://github.com/rhash/RHash) - Great utility for computing hash sums. + +#### C++ +* [Crypto++](https://www.cryptopp.com/) - Crypto++ Library is a free C++ class library of cryptographic schemes. +* [Bcrypt](http://bcrypt.sourceforge.net/) - a cross platform file encryption utility. +* [Botan](https://botan.randombit.net/) - is a cryptography library written in C++11 +* [libsodium](https://github.com/jedisct1/libsodium) - a modern and easy-to-use crypto library. +* [Nettle](http://www.lysator.liu.se/~nisse/nettle/) - a low-level cryptographic library. +* [s2n](https://github.com/awslabs/s2n) - an implementation of the TLS/SSL protocols + +#### C-sharp +* [Bouncy Castle](https://bouncycastle.org/csharp/index.html) - All-purpose cryptographic library. +* [libsodium-net](https://github.com/adamcaudill/libsodium-net) - libsodium for .NET - A secure cryptographic library. +* [StreamCryptor](https://github.com/bitbeans/StreamCryptor) - Stream encryption & decryption with libsodium and protobuf. + + +#### Clojure +* [buddy-core](https://funcool.github.io/buddy-core/latest/) - Cryptographic Api. +* [pandect](https://github.com/xsc/pandect) - Fast and easy-to-use Message Digest, Checksum and HMAC library for Clojure. + +#### Common Lisp +* [crypto-shortcuts](https://github.com/Shinmera/crypto-shortcuts) - Collection of common cryptography functions. +* [ironclad](http://method-combination.net/lisp/ironclad/) - Collection of common crypto shortcuts. +* [trivial-ssh](https://github.com/eudoxia0/trivial-ssh) - an SSH client library for Common Lisp (Built on libssh2) + +#### Delphi +* [DelphiEncryptionCompendium](https://github.com/winkelsdorf/DelphiEncryptionCompendium/releases) - Cryptographic library for Delphi. +* [LockBox](https://sourceforge.net/projects/tplockbox/) - LockBox 3 is a Delphi library for cryptography. +* [SynCrypto](https://github.com/synopse/mORMot/blob/master/SynCrypto.pas) - Fast cryptographic routines (hashing and cypher), implementing AES, XOR, RC4, ADLER32, MD5, SHA1, SHA256 algorithms, optimized for speed. +* [TForge](https://bitbucket.org/sergworks/tforge) - TForge is open-source crypto library written in Delphi, compatible with FPC. + +#### Elixir +* [cipher](https://github.com/rubencaro/cipher) - Elixir crypto library to encrypt/decrypt arbitrary binaries. +* [cloak](https://github.com/danielberkompas/cloak) - Cloak makes it easy to use encryption with Ecto. +* [comeonin](https://github.com/elixircnx/comeonin) - Password authorization (bcrypt) library for Elixir. +* [elixir_tea](https://github.com/keichan34/elixir_tea) - TEA implementation in Elixir. +* [elixir-rsa](https://github.com/trapped/elixir-rsa) - `public_key` cryptography wrapper for Elixir. +* [ex_crypto](https://github.com/ntrepid8/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](https://github.com/rozap/exgpg) - Use gpg from Elixir. +* [pot](https://github.com/yuce/pot) - Erlang library for generating one time passwords compatible with Google Authenticator. +* [siphash-elixir](https://github.com/zackehh/siphash-elixir) - Elixir implementation of the SipHash hash family. + +#### Go +* [crypto](https://golang.org/pkg/crypto/) - Official Website Resources. +* [cryptoballot](https://github.com/cryptoballot/cryptoballot) - Cryptographically secure online voting. +* [dedis/crypto](https://github.com/dedis/crypto) - Advanced crypto library for the Go language +* [gocrypto](https://github.com/kisom/gocrypto) - Example source code for the Practical Crypto with Go book. + +#### Haskell +* [Cryptography & Hashing](https://wiki.haskell.org/Applications_and_libraries/Cryptography) - Official Website of Haskell +* [Cryptonite](https://hackage.haskell.org/package/cryptonite) - Cryptonite is a haskell repository of cryptographic primitives. +* [Crypto](http://hackage.haskell.org/packages/#cat:Crypto) - a collaborative Hackage list. +* [Cryptography](http://hackage.haskell.org/packages/#cat:Cryptography) - a collaborative Hackage list. + +#### Hexe +* [haxe-crypto](http://lib.haxe.org/p/haxe-crypto/) - Haxe Cryptography Library. + +#### JavaScript +* [cryptojs](https://github.com/gwjjeff/cryptojs) - Provide standard and secure cryptographic algorithms for NodeJS. +* [javascript-crypto-library](https://github.com/clipperz/javascript-crypto-library) - The JavaScript Crypto Library provides web developers with an extensive and efficient set of cryptographic functions. +* [JShashes](https://github.com/h2non/jshashes) - Fast and dependency-free cryptographic hashing library for node.js and browsers (supports MD5, SHA1, SHA256, SHA512, RIPEMD, HMAC) +* [sjcl](https://github.com/bitwiseshiftleft/sjcl) - Stanford Javascript Crypto Library. + +#### Java +* [Apache Shiro](http://shiro.apache.org/) - Performs authentication, authorization, cryptography and session management. +* [Bouncy Castle](https://www.bouncycastle.org/java.html) - All-purpose cryptographic library. JCA provider, wide range of functions from basic helpers to PGP/SMIME operations. +* [Google Keyczar](https://github.com/google/keyczar) - Easy to use, yet safe encryption framework with key versioning. +* [pac4j ](https://github.com/pac4j/pac4j) - Security engine. + +#### Julia +* [Crypto.jl](https://github.com/danielsuo/Crypto.jl) - a library that wraps OpenSSL, but also has pure Julia implementations for reference. + +#### Lua +* [LuaCrypto](https://github.com/mkottman/luacrypto) - Lua bindings to OpenSSL. +* [lua-lockbox ](https://github.com/somesocks/lua-lockbox) - a collection of cryptographic primitives written in pure Lua. + +#### Objective-C +* [Themis](https://github.com/cossacklabs/themis) - High-level crypto library, providing basic asymmetric encryption. +* [CocoaSecurity](https://github.com/kelp404/CocoaSecurity) - AES, MD5, SHA1, SHA224, SHA256, SHA384, SHA512, Base64, Hex. +* [RNCryptor](https://github.com/RNCryptor/RNCryptor) - CCCryptor (AES encryption) wrappers for iOS and Mac. + +#### PHP +* [halite](https://paragonie.com/project/halite) - a simple library for encryption using [libsodium](https://github.com/jedisct1/libsodium). +* [PHP Encryption](https://github.com/defuse/php-encryption) - This is a library for encrypting data with a key or password in PHP. +* [TCrypto](https://github.com/timoh6/TCrypto) - TCrypto is a simple and flexible PHP 5.3+ in-memory key-value storage library. + +#### Python +* [charm](https://github.com/JHUISI/charm) - a framework for rapidly prototyping cryptosystems. +* [cryptopy](https://sourceforge.net/projects/cryptopy/) - is a pure python implmentation of cryptographic algorithms and applications. +* [cryptography](https://cryptography.io/en/latest/) - is a Python library which exposes cryptographic recipes and primitives. +* [Google Keyczar](https://github.com/google/keyczar) - Easy-to-use crypto toolkit +* [pycrypto](https://github.com/dlitz/pycrypto) - The Python Cryptography Toolkit +* [hashids](https://github.com/davidaurelio/hashids-python) - Implementation of [hashids](http://hashids.org) in Python. +* [paramiko](http://www.paramiko.org/) - a Python implementation of the SSHv2 protocol, providing both client and server functionality. +* [pynacl](https://github.com/pyca/pynacl) - Python binding to the Networking and Cryptography (NaCl) library + +#### Ruby +* [RbNaCl](https://github.com/cryptosphere/rbnacl) - Ruby binding to the Networking and Cryptography (NaCl) library. + +#### Rust +* [ring](https://github.com/briansmith/ring) - Safe, fast, small crypto using Rust & BoringSSL's cryptography primitives. +* [webpki](https://github.com/briansmith/webpki) - Web PKI TLS X.509 certificate validation in Rust. +* [rust-crypto](https://github.com/DaGenix/rust-crypto) - a (mostly) pure-Rust implementation of various cryptographic algorithms. +* [sodiumoxide](https://github.com/dnaq/sodiumoxide) - Sodium Oxide: Fast cryptographic library for Rust (bindings to libsodium). +* [suruga](https://github.com/klutzy/suruga) - TLS 1.2 implementation in Rust. +* [octavo](https://github.com/libOctavo/octavo) - Highly modular & configurable hash & crypto library. +* [rust-openssl](https://github.com/sfackler/rust-openssl) - OpenSSL bindings for Rust. + +#### Scala +* [scrypto](https://github.com/ScorexProject/scrypto) - Cryptographic primitives for Scala. + +#### Swift +* [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift) - Crypto related functions and helpers for Swift implemented in Swift programming language. +* [IDZSwiftCommonCrypto](https://github.com/iosdevzone/IDZSwiftCommonCrypto) - a wrapper for Apple's Common Crypto library written in Swift. +* [OpenSSL](https://github.com/Zewo/OpenSSL) - Swift OpenSSL for OS X and Linux. +* [SweetHMAC](https://github.com/jancassio/SweetHMAC) - a tiny and easy to use Swift class to encrypt strings using HMAC algorithms. +* [Swift-Sodium](https://github.com/jedisct1/swift-sodium) - Swift interface to the Sodium library for common crypto operations for iOS and OS X. +* [SwiftSSL](https://github.com/SwiftP2P/SwiftSSL) - an Elegant crypto toolkit in Swift. + + +# Contributing + +Your contributions are always welcome! Please take a look at the [contribution guidelines](https://github.com/lk-geimfari/awesome-cryptography/blob/master/CONTRIBUTING.md) first. +