Comparison of cryptography libraries

{{Short description|None}}

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

Cryptography libraries

{{sort-under}}

class="wikitable sortable sort-under" style="text-align: left"
Name of implementation || Initiative || Main implementation language || Open-source software || Software license || Latest release
BotanJack LloydC++{{Yes}}Simplified BSD{{Latest stable software release/Botan}}
Bouncy CastleLegion of the Bouncy Castle Inc.Java, C#{{Yes}}MIT License{{Latest stable software release/Bouncy Castle}}
BSAFEDell, formerly RSA SecurityJava, C, Assembly{{No}}ProprietaryCrypto-C Micro Edition: {{Latest stable software release/BSAFE Crypto-C Micro Edition}}
Micro Edition Suite: {{Latest stable software release/BSAFE Micro Edition Suite}}
Crypto-J: {{Latest stable software release/RSA BSAFE Crypto-J}}
cryptlibPeter GutmannC{{Yes}}Sleepycat License or commercial license{{Latest stable software release/cryptlib}}
Crypto++The Crypto++ projectC++{{Yes}}Boost (all individual files are public domain)Jan 10, 2023 (8.9.0)
GnuTLSNikos Mavrogiannopoulos, Simon JosefssonC{{Yes}}LGPL-2.1-or-later{{wikidata|property|preferred|references|edit|Q1533305|P348|P548=Q2804309}} {{wikidata|qualifier|raw|preferred|single|Q1533305|P348|P548=Q2804309|P577}}
Intel Cryptography Primitives LibraryIntelC, ASM{{Yes}}Apache 2.0March 2025 (2025.1.0 / 1.1.0)
Java's default JCA/JCE providersOracleJava{{Yes}}GNU GPL v2 and commercial license{{Latest stable software release/Java (software platform)}}
LibreSSLOpenBSD FoundationC{{Yes}}Apache 1.0{{wikidata|property|preferred|references|edit|Q16590706|P348|P548=Q2804309}} {{wikidata|qualifier|raw|preferred|single|Q16590706|P348|P548=Q2804309|P577}}
LibgcryptGnuPG community and g10codeC{{Yes}}GNU LGPL v2.1+{{Latest stable software release/Libgcrypt}}
|libsodiumFrank DenisC{{Yes}}ISCSep 13, 2023 (1.0.19)
Mbed TLSArm LimitedC{{Yes}}Apache 2.0{{Latest stable software release/mbed TLS}}
NaClDaniel J. Bernstein, Tanja Lange, Peter SchwabeC{{Yes}}Public domainFebruary 21, 2011[https://nacl.cr.yp.to/install.html Downloading and installing NaCl], Bernstein, Lange, Schwabe, retrieved 2017-05-22
NettleC{{Yes}}GNU GPL v2+ or GNU LGPL v3{{wikidata|property|preferred|references|edit|Q7000521|P348|P548=Q2804309}} {{wikidata|qualifier|raw|preferred|single|Q7000521|P348|P548=Q2804309|P577}}
Network Security Services (NSS)MozillaC{{Yes}}MPL 2.0{{Latest stable software release/Network Security Services}}
OpenSSLThe OpenSSL ProjectC{{Yes}}Apache 2.0{{wikidata|property|preferred|references|edit|Q1052790|P348|P548=Q2804309}} {{wikidata|qualifier|raw|preferred|single|Q1052790|P348|P548=Q2804309|P577}}
wolfCryptwolfSSL, Inc.C{{Yes}}GNU GPL v2 or commercial license{{Latest stable software release/wolfSSL}}

FIPS 140

This table denotes, if a cryptography library provides the technical requisites for FIPS 140, and the status of their FIPS 140 certification (according to NIST's CMVP search,{{Cite web |last=Computer Security Division |first=Information Technology Laboratory |date=2016-10-11 |title=Search - Cryptographic Module Validation Program {{!}} CSRC {{!}} CSRC |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search |access-date=2024-11-22 |website=CSRC {{!}} NIST |language=EN-US}} modules in process list{{Cite web |last=Computer Security Division |first=Information Technology Laboratory |date=2016-10-11 |title=Modules In Process List - Cryptographic Module Validation Program {{!}} CSRC {{!}} CSRC |url=https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/Modules-In-Process-List |access-date=2024-11-22 |website=CSRC {{!}} NIST |language=EN-US}} and implementation under test list).{{Cite web |title=Cryptographic Module Validation Program CMVP |url=https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/IUT-List |website=csrc.nist.gov|date=11 October 2016 }}

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!FIPS 140-2 mode|| FIPS 140-2 validated || FIPS 140-3 validated

Botan

| {{No}}

{{No}}{{No}}
Bouncy Castle

| {{Yes}}

{{Yes}}{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&Vendor=bouncy+castle&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program |website=CSRC.nist.gov |url-status=dead |archive-url=https://web.archive.org/web/20211021224834/https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&Vendor=bouncy+castle&CertificateStatus=Active&ValidationYear=0 |archive-date=2021-10-21}}{{Yes}}{{Cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4743 |title=Certificate #4743 |website=CSRC|date=16 February 2025 }}
BSAFE

| {{Yes}}

{{Yes}}{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=crypto-c&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program |website=CSRC.nist.gov |url-status=dead |archive-url=https://web.archive.org/web/20210924205508/https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=crypto-c&CertificateStatus=Active&ValidationYear=0 |archive-date=2021-09-24}}{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=crypto-j&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program |website=CSRC.nist.gov |url-status=dead |archive-url=https://web.archive.org/web/20211023002317/https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=crypto-j&CertificateStatus=Active&ValidationYear=0 |archive-date=2021-10-23}}{{Yes}}{{Cite web|url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Advanced&ModuleName=bsafe&Standard=140-3&CertificateStatus=Active&ValidationYear=0|title=Cryptographic Module Validation Program | CSRC}}
cryptlib

| {{Yes}}

{{No}}{{No}}
Crypto++

| {{No}}

{{No}}{{No}}
GnuTLS

| {{No}}

{{Yes}}{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=GnuTLS&CertificateStatus=Active&ValidationYear=0 |title=Search - Cryptographic Module Validation Program |website=CSRC |access-date=2022-05-29}}{{maybe|In process}}{{Cite web|url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/modules-in-process/iut-list |title=Implementation Under Test List - Cryptographic Module Validation Program |website=CSRC|date=11 October 2016 }}
Intel Cryptography Primitives Library

| {{No}}

{{No}} {{No}}
Java's default JCA/JCE providers

| {{No}}

{{No}}{{Cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=Java&CertificateStatus=Active&ValidationYear=0 |title=Search - Cryptographic Module Validation Program |website=CSRC |date=11 October 2016}}{{No}}
Libgcrypt

| {{Yes}}

{{Yes}}{{Cite web|url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=libgcrypt&CertificateStatus=Active&ValidationYear=0|title=Search - Cryptographic Module Validation Program | CSRC | CSRC|first=Information Technology Laboratory|last=Computer Security Division|date=October 11, 2016|website=CSRC | NIST}}{{maybe|In process}}
|libsodium

| {{No}}

{{No}}{{No}}
Mbed TLS

| {{No}}

{{No}}{{No}}
NaCl

| {{No}}

{{No}}{{No}}
Nettle

| {{No}}

{{No}}{{No}}
Network Security Services (NSS)

| {{Yes}}

{{Yes}}{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=NSS+&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program |website=CSRC.nist.gov |url-status=dead |archive-url=https://web.archive.org/web/20210924205511/https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=NSS+&CertificateStatus=Active&ValidationYear=0 |archive-date=2021-09-24}}{{maybe|In process}}
OpenSSL

| {{Yes}}

{{Yes}}{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=OpenSSL&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program |website=CSRC.nist.gov |url-status=dead |archive-url=https://web.archive.org/web/20210414133436/https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=openssl&CertificateStatus=Active&ValidationYear=0 |archive-date=2021-04-14}}{{maybe|In process}}
wolfCrypt

| {{Yes}}

{{Yes}}{{Cite web|url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3389|title=Cryptographic Module Validation Program | CSRC | CSRC|first=Information Technology Laboratory|last=Computer Security Division|date=October 11, 2016|website=CSRC | NIST}}{{yes}}{{Cite web|url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4718|title=Cryptographic Module Validation Program | CSRC}}

{{Reflist|group=lower-alpha|refs=

Crypto++ received three FIPS 140 validations from 2003 through 2008. In 2016 NIST moved Crypto++ to the Historical Validation List.

While GnuTLS is not FIPS 140-2 validated by GnuTLS.org, validations exist for versions from Amazon Web Services Inc., Oracle Corporation, Red Hat Inc. and SUSE LLC.

Intel Cryptography Primitives Library is not FIPS 140-3 validated but FIPS 140-3 compliant.

While none of default JDK JCA/JCE providers is FIPS 140-2 validated, there are other JCE/JCA third party providers which are FIPS 140-2 validated.

While Libgcrypt is not FIPS 140-2 validated by g10code, validations exist for versions from Amazon Web Services Inc., Canonical Ltd., Oracle Corporation, Red Hat Inc. and SUSE LLC.

While the Network Security Services (NSS) are not FIPS 140-2 validated by the Mozilla Foundation, validations exist for versions from Amazon Web Services Inc., Canonical Ltd., Cisco Systems Inc., Hewlett Packard Enterprise, Oracle Corporation, Red Hat Inc., SafeLogic Inc., SUSE LLC and Trend Micro Inc.

While OpenSSL is not FIPS 140-2 validated by OpenSSL.org, validations exist for versions from Amazon Web Services Inc., Aqua Security Software Ltd., Broadcom Inc., Canonical Ltd., Cisco Systems Inc., Cohesity Inc., ControlUp Technologies Inc., Crestron Electronics Inc., Dell Inc., Gallagher Group, Hewlett Packard Enterprise, IBM Corporation, ICU Medical Inc., Intelligent Waves, Ixia, KeyPair Consulting Inc., Koninklijke Philips N.V., Lenovo Group Limited, LG Electronics Inc., LogRhythm, McAfee LLC, Metaswitch Networks Ltd, NetBrain Technologies Inc., Nutanix Inc., Onclave Networks Inc., Oracle Corporation, REDCOM Laboratories Inc., Red Hat Inc., SafeLogic Inc., Super Micro Computer Inc., SUSE LLC, Tanium Inc., Trend Micro Inc., Unisys Corporation, Verizon, VMware Inc. and Wickr Inc.

}}

Key operations

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

= Public key algorithms =

{{Further|Public-key cryptography}}

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!RSA

!DSA

!ECDSA

!EdDSA

!Ed448

!DH

!ECDH

!ECIES

!ElGamal

!NTRU
(IEEE P1363.1)

!DSS

Botan

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

cryptlib

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

GnuTLS

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Intel Cryptography Primitives Library

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

libsodium

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

{{Reflist|group=lower-alpha|refs=

By using the lower level interface.

}}

= Elliptic-curve cryptography (ECC) support =

{{Further|Elliptic-curve cryptography}}

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!NIST

!SECG

!ECC Brainpool

!Curve25519

!Curve448

!GOST R 34.10{{IETF RFC|7091}}

![https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02 SM2]

Botan

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

cryptlib

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

GnuTLS

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Intel Cryptography Primitives Library

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

libsodium

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{Partial}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

{{Reflist|group=lower-alpha|refs=

Supported in Intel Cryptography Primitives Library multi-buffer API only (not supported in single-buffer API).

}}

= Public key cryptography standards =

{{Further|PKCS}}

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!PKCS #1

!PKCS #5,{{IETF RFC|8018}} PBKDF2

!PKCS #8

!PKCS #12

!IEEE P1363

!ASN.1

Botan

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE Crypto-J

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

cryptlib

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

GnuTLS

|

|

|

|

|

|

Intel Cryptography Primitives Library

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

libsodium

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

Nettle

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

{{Reflist|group=lower-alpha|refs=

The library offers X.509 and PKCS #8 encoding without PEM by default. For PEM encoding of public and private keys the [https://www.cryptopp.com/wiki/PEM_Pack PEM Pack] is needed.

These Public Key Cryptographic Standards (PKCS) are supported by accompanying libraries and tools, which are also part of the [https://gnupg.org/download/ GnuPG framework], although not by the actual libgcrypt library.}}

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.

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!MD5

!SHA-1

!SHA-2

!SHA-3

!RIPEMD-160

!Tiger

!Whirlpool

!BLAKE2

!GOST R 34.11-94{{IETF RFC|5831}}
(aka GOST 34.311-95)

!GOST R 34.11-2012
(Stribog)
{{IETF RFC|6986}}

!SM3

Botan

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE Crypto-J

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

cryptlib

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

GnuTLS

|

|

|

|

|

|

|

|

|

|

|

Intel Cryptography Primitives Library

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

libsodium

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

MAC algorithms

Comparison of implementations of message authentication code (MAC) algorithms. A MAC is a short piece of information used to authenticate a message—in other words, to confirm that the message came from the stated sender (its authenticity) and has not been changed in transit (its integrity).

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!HMAC-MD5

!HMAC-SHA1

!HMAC-SHA2

!Poly1305

!BLAKE2-MAC

Botan

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE Crypto-J

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

cryptlib

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

GnuTLS

|

|

|

|

|

Intel Cryptography Primitives Library

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

libsodium

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Mbed TLS

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Block ciphers

Table compares implementations of block ciphers. Block ciphers are defined as being deterministic and operating on a set number of bits (termed a block) using a symmetric key. Each block cipher can be broken up into the possible key sizes and block cipher modes it can be run with.

= Block cipher algorithms =

{{Further|Block cipher}}

class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
Implementation

!AES

!3DES

!Camellia

!Blowfish

!Twofish

!IDEA

!CAST5

!ARIA

!GOST 28147-89{{IETF RFC|5830}}
/ GOST R 34.12-2015
(Magma{{IETF RFC|8891}} & Kuznyechik{{IETF RFC|7801}})

!SM4

Botan

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Bouncy Castle[https://www.bouncycastle.org/specifications.html Bouncy Castle Specifications], bouncycastle.org, retrieved 2018-04-10

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE Crypto-J

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

cryptlib[https://www.cs.auckland.ac.nz/~pgut001/cryptlib/ cryptlib Encryption Toolkit], Peter Gutmann, retrieved 2015-11-28

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Partial}}

|{{Yes}}

GnuTLS

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Intel Cryptography Primitives Library

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

libsodium

|{{Partial}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

{{Reflist|group=lower-alpha|refs=

Crypto++ only supports GOST 28147-89, but not GOST R 34.12-2015.

libsodium only supports AES-256, but not AES-128 or AES-192.

}}

= Cipher modes =

{{Further|Block cipher mode of operation}}

class="wikitable sortable sort-under" style="text-align: left"
Implementation

!ECB

!CBC

!OFB

!CFB

!CTR

!CCM

!GCM

!OCB

!XTS

![https://tools.ietf.org/html/rfc3394 AES-Wrap]

!Stream

!EAX

Botan

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

cryptlib

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

GnuTLS

|

|

|

|

|

|

|

|

|

|

|

|

Intel Cryptography Primitives Library

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

Java's default JCA/JCE providers

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

Libgcrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

libsodium

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

wolfCrypt

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

Stream ciphers

The table below shows the support of various stream ciphers. Stream ciphers are defined as using plain text digits that are combined with a pseudorandom cipher digit stream. Stream ciphers are typically faster than block ciphers and may have lower hardware complexity, but may be more susceptible to attacks.

class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
Implementation

!RC4

!HC-256

!Rabbit

!Salsa20

!ChaCha

!SEAL

!Panama

!WAKE

!Grain

!VMPC

!ISAAC

Botan

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Bouncy Castle

|{{Yes}}

|{{Yes}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

BSAFE Crypto-J

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

cryptlib

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Crypto++

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

GnuTLS

|

|

|

|

|

|

|

|

|

|

|

Intel Cryptography Primitives Library

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Java's default JCA/JCE providers

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Libgcrypt

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

libsodium

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Mbed TLS

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Nettle

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

OpenSSL

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

wolfCrypt

|{{Yes}}

|{{No}}

|{{No}}

|{{Yes}}

|{{Yes}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

|{{No}}

Hardware-assisted support

These tables compare the ability to use hardware enhanced cryptography. By using the assistance of specific hardware, the library can achieve greater speeds and/or improved security than otherwise.

= Smart card, SIM, HSM protocol support =

{{Further|Smart card|SIM card|Hardware security module}}

class="wikitable sortable sort-under" style="text-align: left"
Implementation

! PKCS #11

! PC/SC

! CCID

Botan

| {{Yes}}

| {{No}}

| {{No}}

Bouncy Castle

| {{Yes}}

| {{No}}

| {{No}}

BSAFE

| {{Yes}}

| {{No}}

| {{No}}

cryptlib

| {{Yes}}

| {{No}}

| {{No}}

Crypto++

| {{No}}

| {{No}}

| {{No}}

GnuTLS

| {{Yes}}

| {{No}}

| {{No}}

Intel Cryptography Primitives Library

| {{No}}

| {{No}}

| {{No}}

Java's default JCA/JCE providers

| {{Yes}}

| {{No}}

| {{No}}

Libgcrypt

| {{Yes}}With [http://www.scute.org/scute.html/Overview.html Scute], scute.org

| {{Yes}}With GnuPG's [https://www.gnupg.org/documentation/manuals/gnupg/Scdaemon-Options.html SCdaemon] & gpg-agent, gnupg.org

| {{Yes}}

libsodium

| {{No}}

| {{No}}

| {{No}}

Mbed TLS

| {{Yes}}

| {{No}}

| {{No}}

OpenSSL

| {{Yes}}With an [https://github.com/OpenSC/libp11 libp11] engine

| {{No}}

| {{No}}

wolfCrypt

| {{Yes}}

| {{No}}

| {{No}}

{{Reflist|group=lower-alpha|refs=

In conjunction with the PKCS#11 provider, or through the implementation of operator interfaces providing access to basic operations.

When using BSAFE Crypto-J in native mode using BSAFE Crypto-C Micro Edition.

Support is available through javax.smartcardio package of JDK.}}

= General purpose CPU, platform acceleration support =

{{Further|CPU}}

class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
Implementation

! AES-NI

! SSSE3, SSE4.1

! AVX, AVX2

! AVX-512

! RDRAND

! VIA PadLock

! [http://www.intel.com/content/www/us/en/embedded/technology/quickassist/overview.html Intel QuickAssist]

! ARMv7-A NEON

! ARMv8-A cryptography instructions

! Power ISA v2.03 (AltiVec)

! Power ISA v2.07 (e.g., POWER8 and later)

Botan

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{No}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

BSAFE

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{Yes}}

| {{No}}

| {{No}}

cryptlib

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

Crypto++

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

GnuTLS

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

Intel Cryptography Primitives Library

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

Java's default JCA/JCE providers

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{Yes}}

| {{No}}

| {{Yes}}

Libgcrypt[https://dev.gnupg.org/source/libgcrypt/browse/master/src/hwfeatures.c hwfeatures.c], dev.gnupg.org

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

libsodium

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

| {{No}}

OpenSSL

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{Yes}}

wolfCrypt

| {{Yes}}

| {{Yes}}

| {{Yes}}

| {{No}}

| {{Yes}}

| {{No}}

| {{Yes}}{{Cite web|url=https://www.wolfssl.com/wolfSSL/Blog/Entries/2017/1/18_wolfSSL_Asynchronous_Intel_QuickAssist_Support.html|title=WolfSSL Asynchronous Intel QuickAssist Support - wolfSSL|date=18 January 2017}}

| {{Yes}}

| {{Yes}}{{Cite web|url=https://www.wolfssl.com/wolfSSL/Blog/Entries/2016/10/13_wolfSSL_ARMv8_Support.html |title=WolfSSL ARMv8 Support - wolfSSL |date=13 October 2016}}

| {{No}}

| {{No}}

{{Reflist|group=lower-alpha|refs=

AltiVec includes POWER4 through POWER8 SIMD processing. POWER8 added in-core crypto, which provides accelerated AES, SHA and PMUL similar to ARMv8.1.

Crypto++ only provides access to the Padlock random number generator. Other functions, like AES acceleration, are not provided.

OpenSSL RDRAND support is provided through the ENGINE interface. The RDRAND generator is not used by default.

When using RSA BSAFE Crypto-J in native mode using BSAFE Crypto-C Micro Edition

When using the HotSpot JVM

}}

Code size and code to comment ratio

class="wikitable sortable sort-under" style="text-align: left"
Implementation

! Source code size

(kSLOC = 1000 lines of source code)

! Code to comment lines ratio

Botan

|133[https://www.openhub.net/p/botan/analyses/latest/languages_summary Language Analysis of Botan], OpenHub.net, retrieved 2018-07-18

|4.55

Bouncy Castle

|1359[https://www.openhub.net/p/5523/analyses/latest/languages_summary Language Analysis of Bouncy Castle], OpenHub.net, retrieved 2015-12-23

|5.26

BSAFE Crypto-J

|271

|1.3

cryptlib

|241

|2.66

Crypto++

|115[https://www.openhub.net/p/3522/analyses/latest/languages_summary Language Analysis of Crypto++], OpenHub.net, retrieved 2018-07-18

|5.74

GnuTLS

|363[https://www.openhub.net/p/gnutls/analyses/latest/languages_summary Language Analysis of GnuTLS], OpenHub.net, retrieved 2020-09-15

|7.30

Java's default JCA/JCE providers

|{{-}}

|{{-}}

Libgcrypt

|216[https://www.openhub.net/p/libgcrypt/analyses/latest/languages_summary Language Analysis of Libgcrypt], OpenHub.net, retrieved 2015-12-23

|6.27

libsodium

|44[https://www.openhub.net/p/libsodium/analyses/latest/languages_summary Language Analysis of libsodium], OpenHub.net, retrieved 2017-05-07

|21.92

Mbed TLS

|105[https://www.openhub.net/p/mbed-tls/analyses/latest/languages_summary Language Analysis of mbed-tls], OpenHub.net, retrieved 2019-09-15

|33.9

Nettle

|111[https://www.openhub.net/p/nettle/analyses/latest/languages_summary Language Analysis of Nettle], OpenHub.net, retrieved 2015-12-23

|4.08

OpenSSL

|472[https://www.openhub.net/p/openssl/analyses/latest/languages_summary Language Analysis of OpenSSL], OpenHub.net, retrieved 2017-05-07

|4.41

wolfCrypt

|39

|5.69

{{Reflist|group=lower-alpha|refs=

Based on Crypto-J 6.2.5, excluding tests source. Generated using https://github.com/XAMPPRocky/tokei}}

Portability

class="wikitable sortable sort-under" style="text-align: left"
Implementation

! Supported operating system

! Thread safe

Botan

| Linux, Windows, macOS, Android, iOS, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, Solaris, AIX, QNX, Haiku

| {{Yes}}

Bouncy Castle

| General Java API: J2ME, Java Runtime Environment 1.1+, Android. Java FIPS API: Java Runtime 1.5+, Android. C# API (General & FIPS): CLR 4.

|

BSAFE Crypto-J

| Solaris, Linux, Android, FreeBSD, AIX, 32 and 64-bit Windows, macOS (Darwin)

| {{Yes}}

cryptlib

| AMX, ARINC 653, BeOS, ChorusOS, CMSIS-RTOS/mbed-rtos, DOS, DOS32, eCOS, embOS, FreeRTOS/OpenRTOS, uItron, MQX, MVS, Nucleus, OS/2, Palm OS, QNX Neutrino, RTEMS, SMX, Tandem NonStop, Telit, ThreadX, uC/OS II, Unix (AIX, FreeBSD, HP-UX, Linux, macOS, Solaris, etc.), VDK, VM/CMS, VxWorks, Win16, Win32, Win64, WinCE/PocketPC/etc, XMK

| {{Yes}}

Crypto++

| Unix (AIX, OpenBSD, Linux, MacOS, Solaris, etc.), Win32, Win64, Android, iOS, ARM

| {{Yes}}

GnuTLS

| Runs on most Unix platforms and Windows[https://www.gnutls.org/#features GnuTLS - features], GnuTLS.org, retrieved 2022-09-15

| ?

Intel Cryptography Primitives Library

| Windows 10/11, Windows Server 2019/2022, Red Hat Enterprise Linux (RHEL) 8/9, SUSE Linux Enterprise Server (SLES) 15 SP4 / SP5 / SP6, Ubuntu 22.04 LTS / 24.04 LTS, Rocky Linux 9, Fedora 39 / 40, Debian 12

| {{Yes}}

Libgcrypt

| All 32- and 64-bit Unix Systems (Linux, FreeBSD, NetBSD, macOS etc.), Win32, Win64, WinCE, and more

| {{Yes}}[https://gnupg.org/documentation/manuals/gcrypt-devel/Overview.html GnuPG documentation: Libgcrypt overview - thread safety], GnuPG.org, retrieved 2016-04-16

libsodium

| macOS, Linux, OpenBSD, NetBSD, FreeBSD, DragonflyBSD, Android, iOS, 32 and 64-bit Windows (Visual Studio, MinGW, C++ Builder), NativeClient, QNX, JavaScript, AIX, MINIX, Solaris

| {{Yes}}

Mbed TLS

| Win32/64, Unix Systems, embedded Linux, Micrium's μC/OS, FreeRTOS

| ?

OpenSSL

| Solaris, IRIX, HP-UX, MPE/iX, Tru64, Linux, Android, BSD (OpenBSD, NetBSD, FreeBSD, DragonflyBSD), NextSTEP, QNX, UnixWare, SCO, AIX, 32 and 64-bit Windows (Visual Studio, MinGW, UWIN, CygWin), UEFI, macOS (Darwin), iOS, HURD, VxWorks, uClinux, VMS, DJGPP (DOS), Haiku

| {{Yes}}

wolfCrypt

| Win32/64, Linux, macOS, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, WinCE, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii and Gamecube through DevKitPro, QNX, MontaVista, NonStop, TRON/ITRON/μITRON, Micrium's μC/OS, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, HP-UX

| {{Yes}}

{{Reflist|group=lower-alpha|refs=

Crypto++ is thread safe at the object level, i.e. there is no shared data among instances. If two different threads access the same object then the user is responsible for locking.}}

References

{{Reflist}}

{{DEFAULTSORT:Cryptography library comparison}}

Category:Computer libraries

Library comparison

Cryptography libraries