Top 23 C Cryptography Projects
-
OpenSSL
TLS/SSL and crypto library
Project mention: Weird architectures weren't supported to begin with | news.ycombinator.com | 2021-02-28> I feel like this really only makes sense if pyca/cryptography had planned on adding the Rust dependency from the very beginning (or from very early on). Is there any indication that was the case?
I am sure this idea surfaced several times in IRC or possibly in the mailing lists. Certainly, the authors have been toying with handling ASN.1 in rust since 2015 [1], which I guess will be the next logical step.
I do agree that this is mostly a political stance. pyca/cryptography is a wrapper sandwiched between a gigantic runtime written in C (CPython/PyPy) and a gigantic library written in C (openssl).
The addition of Rust as dependency enables the inclusion of just 90 lines of Rust [2] where the only part that really couldn't be implemented in pure Python is a line copied from OpenSSL [3] (i.e. it was already available), and which is purely algebraic, therefore not mitigating any real memory issue at all (the reason to use rust in the first place).
The change in this wrapper (pyca/cryptographic) does not move the needle of security in any significant way, and it is really only meant to send the signal that adding Rust in all other Python packages and especially in the runtime itself will now come at no (political) cost.
[1] https://github.com/alex/rust-asn1
[2] https://github.com/pyca/cryptography/blob/main/src/rust/src/...
[3] https://github.com/openssl/openssl/blob/OpenSSL_1_1_1i/inclu...
-
libsodium
A modern, portable, easy to use crypto library.
Project mention: I wrote a literate state of the art random number library and integrated explanation in c | reddit.com/r/C_Programming | 2021-01-31(https://github.com/jedisct1/libsodium/blob/master/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c)
-
Scout
Get performance insights in less than 4 minutes. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
-
s2n
s2n : an implementation of the TLS/SSL protocols
I would be interested in the other SSL implementations:
- https://github.com/awslabs/s2n
- https://boringssl.googlesource.com/boringssl
Are these subpar implementations or there are other reasons not to use these?
-
mbedTLS
An open source, portable, easy to use, readable and flexible SSL library
mbed TLS - Another crypto implementation. Apache-2.0
-
Tiny AES128 in C
Small portable AES128/192/256 in C
-
c-toxcore
The future of online communications.
Tox has experimental crypto and major vulnerabilities. I wouldn't recommend using it and expecting reasonable security.
-
Themis
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.
-
wolfssl
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!
You mention mbedtls, but for an example I was able to find that wolfssl lists some benchmarks and notice that under hardware acceleration, AES CBC gives OK performance while AES GCM looks pretty bad.
-
LibTomCrypt
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.
libtomcrypt - Fairly comprehensive, modular and portable cryptographic toolkit. Public domain.
-
LibreSSL
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code. Pull requests or patches sent to [email protected] are welcome.
Project mention: [gentoo-dev] [News review] LibreSSL support discontinued | reddit.com/r/Gentoo | 2021-01-03On the plus side they have Ed25519, on the negative side we don't have BLAKE2 or X25519, etc.
-
PyNacl
Python binding to the Networking and Cryptography (NaCl) library
PyNaCl Argon2i
-
Bcrypt
Modern(-ish) password hashing for your software and your servers
-
firo
The privacy-focused cryptocurrency
FIRO https://firo.org
-
bitcracker
BitCracker is the first open source password cracking tool for memory units encrypted with BitLocker
Project mention: Bitlocker has turned on and never let me set a key and now I can't access my pc. | reddit.com/r/Windows10 | 2020-12-28You could try BitCracker (https://github.com/e-ago/bitcracker) - it is a brute force password attack tool (open source).
-
Swift-Sodium
Safe and easy to use crypto for iOS and macOS
-
wickr-crypto-c
An implementation of the Wickr Secure Messaging Protocol in C
Project mention: Ilpt My Friend Just Got Raided By The Cops What | reddit.com/r/IllegalLifeProTips | 2021-02-11No, source code is here: https://github.com/WickrInc/wickr-crypto-c
-
libhydrogen
A lightweight, secure, easy-to-use crypto library suitable for constrained environments.
-
cipher-aes
DEPRECATED - use cryptonite - a comprehensive fast AES implementation for haskell that supports aesni and advanced cryptographic modes.
-
ed25519
Minimal ed25519 Haskell package, binding to the ref10 SUPERCOP implementation.
-
scrypt
Haskell bindings to Colin Percival's scrypt implementation. (by informatikr)
-
xxhash
Haskell implementation of the XXHash algorithm
-
blake2
A Haskell library providing BLAKE2
-
intel-aes
Haskell package for efficient AES encryption, including Intel AES NI support
Index
What are some of the best open-source Cryptography projects in C? This list will help you:
Project | Stars | |
---|---|---|
1 | OpenSSL | 14,859 |
2 | libsodium | 9,074 |
3 | s2n | 3,911 |
4 | mbedTLS | 2,830 |
5 | Tiny AES128 in C | 2,440 |
6 | c-toxcore | 1,474 |
7 | Themis | 1,222 |
8 | wolfssl | 1,073 |
9 | LibTomCrypt | 1,071 |
10 | LibreSSL | 989 |
11 | PyNacl | 760 |
12 | Bcrypt | 716 |
13 | firo | 523 |
14 | bitcracker | 457 |
15 | Swift-Sodium | 397 |
16 | wickr-crypto-c | 277 |
17 | libhydrogen | 242 |
18 | cipher-aes | 22 |
19 | ed25519 | 18 |
20 | scrypt | 16 |
21 | xxhash | 12 |
22 | blake2 | 8 |
23 | intel-aes | 7 |