Comparison of cryptography libraries


The tables below compare cryptography libraries that deal with cryptography algorithms and have application programming interface function calls to each of the supported features.

Cryptography libraries

Name of implementationInitiativeMain implementation languageOpen-source softwareSoftware licenseLatest release
BotanJack LloydC++Simplified BSD
Bouncy CastleLegion of the Bouncy Castle Inc.Java, C#MIT License
BSAFEDell, formerly RSA SecurityJava, C, AssemblyCrypto-C Micro Edition:
Micro Edition Suite:
Crypto Module for C:
Crypto-J:
cryptlibPeter GutmannCSleepycat License or commercial license
Crypto++The Crypto++ projectC++Boost Jan 10, 2023
GnuTLSNikos Mavrogiannopoulos, Simon JosefssonCLGPL-2.1-or-later
Intel Cryptography Primitives LibraryIntelC, ASMApache 2.0March 2025
Java's default JCA/JCE providersOracleJavaGNU GPL v2 and commercial license
LibreSSLOpenBSD FoundationCApache 1.0
LibgcryptGnuPG community and g10codeCGNU LGPL v2.1+
libsodiumFrank DenisCISCSep 13, 2023
Mbed TLSArm LimitedCApache 2.0
NaClDaniel J. Bernstein, Tanja Lange, Peter SchwabeCPublic domainFebruary 21, 2011
NettleCGNU GPL v2+ or GNU LGPL v3
Network Security Services MozillaCMPL 2.0
OpenSSLThe OpenSSL ProjectCApache 2.0
wolfCryptwolfSSL, Inc.CGNU GPL v3 or commercial license

FIPS 140

This table denotes, if a cryptography library provides the technical requisites for FIPS 140, and the status of their FIPS 140 certification.
ImplementationFIPS 140-2 modeFIPS 140-2 validatedFIPS 140-3 validated
Botan
Bouncy Castle
BSAFE
cryptlib
Crypto++
GnuTLS
Intel Cryptography Primitives Library
Java's default JCA/JCE providers
Libgcrypt
libsodium
Mbed TLS
NaCl
Nettle
Network Security Services
OpenSSL
wolfCrypt

Key operations

Key operations include key generation algorithms, key exchange agreements, and public key cryptography standards.

Public key algorithms

ImplementationRSADSAECDSAEdDSAEd448DHECDHECIESElGamalNTRU
DSSML-DSAML-KEM
Botan
Bouncy Castle
BSAFE
cryptlib
Crypto++
GnuTLS
Intel Cryptography Primitives Library
Java's default JCA/JCE providers
Libgcrypt
libsodium
Mbed TLS
Nettle
OpenSSL
wolfCrypt

Elliptic-curve cryptography (ECC) support

ImplementationNISTSECGECC BrainpoolCurve25519Curve448GOST R 34.10
Botan
Bouncy Castle
BSAFE
cryptlib
Crypto++
GnuTLS
Intel Cryptography Primitives Library
Java's default JCA/JCE providers
Libgcrypt
libsodium
Mbed TLS
Nettle
OpenSSL
wolfCrypt

Public key cryptography standards

ImplementationPKCS #1PKCS #5, PBKDF2PKCS #8PKCS #12IEEE P1363ASN.1
Botan
Bouncy Castle
BSAFE
cryptlib
Crypto++
GnuTLS
Intel Cryptography Primitives Library
Java's default JCA/JCE providers
Libgcrypt
libsodium
Mbed TLS
Nettle
OpenSSL
wolfCrypt

Hash functions

Comparison of supported cryptographic hash functions. Here hash functions are defined as taking an arbitrary length message and producing a fixed size output that is virtually impossible to use for recreating the original message.
ImplementationMD5SHA-1SHA-2SHA-3RIPEMD-160TigerWhirlpoolBLAKE2GOST R 34.11-94
GOST R 34.11-2012
SM3
Botan
Bouncy Castle
BSAFE
cryptlib
Crypto++
GnuTLS
Intel Cryptography Primitives Library
Java's default JCA/JCE providers
Libgcrypt
libsodium
Mbed TLS
Nettle
OpenSSL
wolfCrypt