Английская Википедия:Comparison of cryptography libraries
The tables below compare cryptography libraries that deal with cryptography algorithms and have API function calls to each of the supported features.
Cryptography libraries
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, modules in process list and implementation under test list).
Key operations
Key operations include key generation algorithms, key exchange agreements and public key cryptography standards.
Public key algorithms
Elliptic-curve cryptography (ECC) support
Public key cryptography standards
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.
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).
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
Cipher modes
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.
Hardware-assisted support
These tables compare the ability to utilize 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 and HSM protocol support
General purpose CPU / platform acceleration support
Code size and code to comment ratio
Implementation | Source Code Size (kSLOC = 1000 lines of source code) |
Code Lines to Comment Lines Ratio |
---|---|---|
Botan | 133[28] | 4.55[28] |
Bouncy Castle | 1359[29] | 5.26[29] |
BSAFE Crypto-J | 271[lower-alpha 20] | 1.3[lower-alpha 20] |
cryptlib | 241 | 2.66 |
Crypto++ | 115[30] | 5.74[30] |
GnuTLS | 363[31] | 7.30[31] |
Java's default JCA/JCE providers | Шаблон:- | Шаблон:- |
Libgcrypt | 216[32] | 6.27[32] |
libsodium | 44[33] | 21.92[33] |
Mbed TLS | 105[34] | 33.9[34] |
Nettle | 111[35] | 4.08[35] |
OpenSSL | 472[36] | 4.41[36] |
wolfCrypt | 39 | 5.69 |
Portability
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[lower-alpha 21] |
GnuTLS | Runs on most Unix platforms and Windows[37] | ? |
Libgcrypt | All 32 and 64 bit Unix Systems (Linux, FreeBSD, NetBSD, macOS etc.), Win32, Win64, WinCE and more | Шаблон:Yes[38] |
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 |
References
- ↑ Downloading and installing NaCl, Bernstein, Lange, Schwabe, retrieved 2017-05-22
- ↑ Шаблон:Cite web
- ↑ 3,0 3,1 3,2 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 7,0 7,1 7,2 7,3 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=libgcrypt&CertificateStatus=Active&ValidationYear=0 Шаблон:Dead link
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3389
- ↑ Шаблон:IETF RFC
- ↑ Шаблон:IETF RFC
- ↑ Шаблон:IETF RFC
- ↑ Шаблон:IETF RFC
- ↑ Шаблон:IETF RFC
- ↑ Шаблон:IETF RFC
- ↑ Шаблон:IETF RFC
- ↑ Bouncy Castle Specifications, bouncycastle.org, retrieved 2018-04-10
- ↑ cryptlib Encryption Toolkit, Peter Gutmann, retrieved 2015-11-28
- ↑ With Scute, scute.org
- ↑ 23,0 23,1 With GnuPG's SCdaemon & gpg-agent, gnupg.org
- ↑ 24,0 24,1 With an libp11 engine
- ↑ hwfeatures.c, dev.gnupg.org
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 28,0 28,1 Language Analysis of Botan, OpenHub.net, retrieved 2018-07-18
- ↑ 29,0 29,1 Language Analysis of Bouncy Castle, OpenHub.net, retrieved 2015-12-23
- ↑ 30,0 30,1 Language Analysis of Crypto++, OpenHub.net, retrieved 2018-07-18
- ↑ 31,0 31,1 Language Analysis of GnuTLS, OpenHub.net, retrieved 2020-09-15
- ↑ 32,0 32,1 Language Analysis of Libgcrypt, OpenHub.net, retrieved 2015-12-23
- ↑ 33,0 33,1 Language Analysis of libsodium, OpenHub.net, retrieved 2017-05-07
- ↑ 34,0 34,1 Language Analysis of mbed-tls, OpenHub.net, retrieved 2019-09-15
- ↑ 35,0 35,1 Language Analysis of Nettle, OpenHub.net, retrieved 2015-12-23
- ↑ 36,0 36,1 Language Analysis of OpenSSL, OpenHub.net, retrieved 2017-05-07
- ↑ GnuTLS - features, GnuTLS.org, retrieved 2022-09-15
- ↑ GnuPG documentation: Libgcrypt overview - thread safety, GnuPG.org, retrieved 2016-04-16
Ошибка цитирования Для существующих тегов <ref>
группы «lower-alpha» не найдено соответствующего тега <references group="lower-alpha"/>