Crypto++ Library is a free C++ class library of cryptographic schemes. Currently the library contains the following algorithms:
| algorithm type | name |
|---|---|
| authenticated encryption schemes | GCM, CCM, EAX |
| high speed stream ciphers | Panama, Sosemanuk, Salsa20, XSalsa20 |
| AES and AES candidates | AES (Rijndael), RC6, MARS, Twofish, Serpent, CAST-256 |
| other block ciphers | IDEA, Triple-DES (DES-EDE2 and DES-EDE3), Camellia, http://www.cryptolounge.org/wiki/SEED">SEED, RC5, Blowfish, TEA, XTEA, Skipjack, SHACAL-2 |
| block cipher modes of operation | ECB, CBC, CBC ciphertext stealing (CTS), CFB, OFB, counter mode (CTR) |
| message authentication codes | VMAC, HMAC, CMAC, CBC-MAC, DMAC, Two-Track-MAC |
| hash functions | SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, and SHA-512), Tiger, WHIRLPOOL, RIPEMD-128, RIPEMD-256, RIPEMD-160, RIPEMD-320 |
| public-key cryptography | RSA, DSA, ElGamal, Nyberg-Rueppel (NR), Rabin, Rabin-Williams (RW), LUC, LUCELG, DLIES (variants of DHAES), ESIGN |
| padding schemes for public-key systems | PKCS#1 v2.0, OAEP, PSS, PSSR, IEEE P1363 EMSA2 and EMSA5 |
| key agreement schemes | Diffie-Hellman (DH), Unified Diffie-Hellman (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF, XTR-DH |
| elliptic curve cryptography | ECDSA, ECNR, ECIES, ECDH, ECMQV |
| insecure or obsolescent algorithms retained for backwards compatibility and historical value | MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL 3.0, WAKE, WAKE-OFB, DESX (DES-XEX3), RC2, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square |
Other features include:
root:/mnt/cryptopp-5.6.0> cat /proc/cpuinfo processor : 0 vendor_id : Analog Devices cpu family : 0x27c8 model name : ADSP-BF537 500(MHz CCLK) 100(MHz SCLK) (mpu off) stepping : 2 cpu MHz : 500.000/100.000 bogomips : 997.37 Calibration : 498688000 loops cache size : 16 KB(L1 icache) 32 KB(L1 dcache-wb) 0 KB(L2 cache) dbank-A/B : cache/cache icache setup : 4 Sub-banks/4 Ways, 32 Lines/Way dcache setup : 2 Super-banks/4 Sub-banks/2 Ways, 64 Lines/Way board name : ADI BF537-STAMP board memory : 65536 kB (0x00000000 -> 0x04000000) kernel memory : 57336 kB (0x00001000 -> 0x037ff000) root:/mnt/cryptopp-5.6.0> version kernel: Linux release 2.6.28.7-ADI-2009R1-pre-svn6180, build #89 Tue Mar 17 18:00:06 EDT 2009 toolchain: bfin-linux-uclibc-gcc release gcc version 4.3.3 (ADI-trunk/svn-3216) user-dist: release svn-7890, build #240 Tue Mar 17 17:59:00 EDT 2009
Compiled with -O2
root:/mnt/cryptopp-5.6.0> ./cryptest.exe b 5 .5 CPU frequency of the test platform is 5e+08 Hz.
| Algorithm | MiB/Second | Cycles Per Byte | Microseconds to Setup Key and IV | Cycles to Setup Key and IV |
|---|---|---|---|---|
| AES/GCM (2K tables) | 2.74 | 173.7 | 43.089 | 21544 |
| AES/GCM (64K tables) | 1.89 | 252.1 | 990.234 | 495117 |
| AES/CCM | 1.91 | 249.1 | 17.193 | 8597 |
| AES/EAX | 1.92 | 248.6 | 38.376 | 19188 | GMAC(AES) (2K tables) | 9.36 | 51.0 | 47.690 | 23845 |
| GMAC(AES) (64K tables) | 4.22 | 113.0 | 990.234 | 495117 |
| VMAC(AES)-64 | 20.1 | 23.7 | 63.540 | 31770 |
| VMAC(AES)-128 | 10.3 | 46.4 | 76.752 | 38376 |
| HMAC(SHA-1) | 12.7 | 37.6 | 13.951 | 6975 |
| Two-Track-MAC | 7.55 | 63.2 | 0.540 | 270 |
| CMAC(AES) | 3.79 | 125.8 | 9.318 | 4659 |
| DMAC(AES) | 3.78 | 126.1 | 24.414 | 12207 |
| CRC32 | 48.6 | 9.8 | ||
| Adler32 | 85.6 | 5.6 | ||
| MD5 | 32.2 | 14.8 | ||
| SHA-1 | 12.7 | 37.6 | ||
| SHA-256 | 4.68 | 101.9 | ||
| SHA-512 | 2.57 | 185.4 | ||
| Tiger | 6.68 | 71.4 | ||
| Whirlpool | 1.54 | 310.5 | ||
| RIPEMD-160 | 11.7 | 40.7 | ||
| RIPEMD-320 | 8.47 | 56.3 | ||
| RIPEMD-128 | 21.7 | 22.0 | ||
| RIPEMD-256 | 19.2 | 24.9 | ||
| Panama-LE | 31.1 | 15.3 | 33.976 | 16988 |
| Panama-BE | 29.2 | 16.4 | 34.214 | 17107 |
| Salsa20 | 9.95 | 47.9 | 4.138 | 2069 |
| Salsa20/12 | 13.9 | 34.2 | 4.754 | 2377 |
| Salsa20/8 | 17.5 | 27.2 | 4.759 | 2380 |
| Sosemanuk | 16.9 | 28.2 | 13.161 | 6581 |
| MARC4 | 15.8 | 30.2 | 29.711 | 14856 |
| SEAL-3.0-LE | 15.8 | 30.2 | 825.195 | 412598 |
| WAKE-OFB-LE | 36.0 | 13.3 | 22.341 | 11170 |
| AES/CTR (128-bit key) | 3.91 | 121.9 | 7.478 | 3739 |
| AES/CTR (192-bit key) | 3.34 | 142.8 | 7.376 | 3688 |
| AES/CTR (256-bit key) | 2.92 | 163.3 | 7.813 | 3906 |
| AES/CBC (128-bit key) | 3.78 | 126.1 | 6.333 | 3167 |
| AES/CBC (192-bit key) | 3.25 | 146.9 | 6.236 | 3118 |
| AES/CBC (256-bit key) | 2.85 | 167.2 | 6.671 | 3335 |
| AES/OFB (128-bit key) | 3.76 | 127.0 | 7.838 | 3919 |
| AES/CFB (128-bit key) | 3.95 | 120.7 | 12.716 | 6358 |
| AES/ECB (128-bit key) | 4.05 | 117.7 | 3.242 | 1621 |
| Camellia/CTR (128-bit key) | 3.96 | 120.4 | 7.478 | 3739 |
| Camellia/CTR (256-bit key) | 3.09 | 154.1 | 10.258 | 5129 |
| Twofish/CTR | 3.72 | 128.1 | 127.704 | 63852 |
| Serpent/CTR | 3.80 | 125.5 | 13.639 | 6820 |
| CAST-256/CTR | 3.08 | 154.7 | 32.041 | 16021 |
| RC6/CTR | 5.76 | 82.9 | 134.607 | 67304 |
| MARS/CTR | 4.47 | 106.7 | 28.669 | 14334 |
| SHACAL-2/CTR (128-bit key) | 4.35 | 109.7 | 8.961 | 4480 |
| SHACAL-2/CTR (512-bit key) | 4.35 | 109.7 | 9.283 | 4641 |
| DES/CTR | 2.23 | 213.4 | 434.570 | 217285 |
| DES-XEX3/CTR | 1.94 | 245.6 | 434.570 | 217285 |
| DES-EDE3/CTR | 0.82 | 579.4 | 1389.160 | 694580 |
| IDEA/CTR | 3.70 | 129.0 | 7.455 | 3727 |
| RC5 (r=16) | 6.19 | 77.0 | 105.967 | 52984 |
| Blowfish/CTR | 3.64 | 130.8 | 922.852 | 461426 |
| TEA/CTR | 3.62 | 131.7 | 6.820 | 3410 |
| XTEA/CTR | 3.08 | 154.7 | 6.244 | 3122 |
| CAST-128/CTR | 4.83 | 98.6 | 15.117 | 7559 |
| SKIPJACK/CTR | 2.50 | 191.0 | 52.153 | 26076 |
| SEED/CTR (1/2 K table) | 2.41 | 197.9 | 10.522 | 5261 |
| Operation | Milliseconds/Operation | Megacycles/Operation |
|---|---|---|
| RSA 1024 Encryption | 3.40 | 1.70 |
| RSA 1024 Decryption | 169.00 | 84.50 |
| LUC 1024 Encryption | 4.30 | 2.15 |
| LUC 1024 Decryption | 308.24 | 154.12 |
| DLIES 1024 Encryption | 137.03 | 68.51 |
| DLIES 1024 Encryption with precomputation | 103.47 | 51.73 |
| DLIES 1024 Decryption | 78.75 | 39.38 |
| LUCELG 512 Encryption | 96.15 | 48.08 |
| LUCELG 512 Encryption with precomputation | 95.85 | 47.92 |
| LUCELG 512 Decryption | 51.55 | 25.77 |
| RSA 2048 Encryption | 8.62 | 4.31 |
| RSA 2048 Decryption | 835.00 | 417.50 |
| LUC 2048 Encryption | 11.26 | 5.63 |
| LUC 2048 Decryption | 1330.00 | 665.00 |
| DLIES 2048 Encryption | 533.00 | 266.50 |
| DLIES 2048 Encryption with precomputation | 445.83 | 222.92 |
| DLIES 2048 Decryption | 291.11 | 145.56 |
| LUCELG 1024 Encryption | 290.00 | 145.00 |
| LUCELG 1024 Encryption with precomputation | 289.44 | 144.72 |
| LUCELG 1024 Decryption | 153.64 | 76.82 |
| RSA 1024 Signature | 169.00 | 84.50 |
| RSA 1024 Verification | 3.40 | 1.70 |
| RW 1024 Signature | 169.67 | 84.83 |
| RW 1024 Verification | 1.05 | 0.53 |
| LUC 1024 Signature | 307.65 | 153.82 |
| LUC 1024 Verification | 4.29 | 2.15 |
| NR 1024 Signature | 69.32 | 34.66 |
| NR 1024 Signature with precomputation | 23.79 | 11.90 |
| NR 1024 Verification | 79.68 | 39.84 |
| NR 1024 Verification with precomputation | 40.08 | 20.04 |
| DSA 1024 Signature | 67.07 | 33.53 |
| DSA 1024 Signature with precomputation | 23.15 | 11.57 |
| DSA 1024 Verification | 77.38 | 38.69 |
| DSA 1024 Verification with precomputation | 39.22 | 19.61 |
| LUC-HMP 512 Signature | 95.85 | 47.92 |
| LUC-HMP 512 Signature with precomputation | 95.66 | 47.83 |
| LUC-HMP 512 Verification | 96.73 | 48.37 |
| LUC-HMP 512 Verification with precomputation | 96.15 | 48.08 |
| ESIGN 1023 Signature | 7.86 | 3.93 |
| ESIGN 1023 Verification | 3.34 | 1.67 |
| ESIGN 1536 Signature | 18.12 | 9.06 |
| ESIGN 1536 Verification | 8.38 | 4.19 |
| RSA 2048 Signature | 836.67 | 418.33 |
| RSA 2048 Verification | 8.59 | 4.30 |
| RW 2048 Signature | 841.67 | 420.83 |
| RW 2048 Verification | 2.27 | 1.13 |
| LUC 2048 Signature | 1330.00 | 665.00 |
| LUC 2048 Verification | 11.26 | 5.63 |
| NR 2048 Signature | 268.95 | 134.47 |
| NR 2048 Signature with precomputation | 75.37 | 37.69 |
| NR 2048 Verification | 302.94 | 151.47 |
| NR 2048 Verification with precomputation | 126.75 | 63.38 |
| LUC-HMP 1024 Signature | 289.44 | 144.72 |
| LUC-HMP 1024 Signature with precomputation | 288.33 | 144.17 |
| LUC-HMP 1024 Verification | 290.56 | 145.28 |
| LUC-HMP 1024 Verification with precomputation | 290.00 | 145.00 |
| ESIGN 2046 Signature | 18.12 | 9.06 |
| ESIGN 2046 Verification | 8.53 | 4.27 |
| XTR-DH 171 Key-Pair Generation | 29.53 | 14.76 |
| XTR-DH 171 Key Agreement | 59.30 | 29.65 |
| XTR-DH 342 Key-Pair Generation | 301.76 | 150.88 |
| XTR-DH 342 Key Agreement | 609.00 | 304.50 |
| DH 1024 Key-Pair Generation | 69.04 | 34.52 |
| DH 1024 Key-Pair Generation with precomputation | 52.50 | 26.25 |
| DH 1024 Key Agreement | 78.28 | 39.14 |
| DH 2048 Key-Pair Generation | 267.89 | 133.95 |
| DH 2048 Key-Pair Generation with precomputation | 223.48 | 111.74 |
| DH 2048 Key Agreement | 286.67 | 143.33 |
| LUCDIF 512 Key-Pair Generation | 48.27 | 24.13 |
| LUCDIF 512 Key-Pair Generation with precomputation | 48.27 | 24.13 |
| LUCDIF 512 Key Agreement | 52.19 | 26.09 |
| LUCDIF 1024 Key-Pair Generation | 144.86 | 72.43 |
| LUCDIF 1024 Key-Pair Generation with precomputation | 144.86 | 72.43 |
| LUCDIF 1024 Key Agreement | 153.24 | 76.62 |
| MQV 1024 Key-Pair Generation | 68.63 | 34.32 |
| MQV 1024 Key-Pair Generation with precomputation | 23.57 | 11.78 |
| MQV 1024 Key Agreement | 123.81 | 61.90 |
| MQV 2048 Key-Pair Generation | 266.32 | 133.16 |
| MQV 2048 Key-Pair Generation with precomputation | 73.97 | 36.99 |
| MQV 2048 Key Agreement | 470.83 | 235.42 |
| ECIES over GF(p) 256 Encryption | 162.90 | 81.45 |
| ECIES over GF(p) 256 Encryption with precomputation | 63.54 | 31.77 |
| ECIES over GF(p) 256 Decryption | 97.12 | 48.56 |
| ECDSA over GF(p) 256 Signature | 81.97 | 40.98 |
| ECDSA over GF(p) 256 Signature with precomputation | 32.39 | 16.19 |
| ECDSA over GF(p) 256 Verification | 140.83 | 70.42 |
| ECDSA over GF(p) 256 Verification with precomputation | 55.05 | 27.53 |
| ECDHC over GF(p) 256 Key-Pair Generation | 81.61 | 40.81 |
| ECDHC over GF(p) 256 Key-Pair Generation with precomputation | 31.71 | 15.85 |
| ECDHC over GF(p) 256 Key Agreement | 83.50 | 41.75 |
| ECMQVC over GF(p) 256 Key-Pair Generation | 82.30 | 41.15 |
| ECMQVC over GF(p) 256 Key-Pair Generation with precomputation | 32.05 | 16.03 |
| ECMQVC over GF(p) 256 Key Agreement | 140.56 | 70.28 |
| ECIES over GF(2^n) 233 Encryption | 232.73 | 116.36 |
| ECIES over GF(2^n) 233 Encryption with precomputation | 68.38 | 34.19 |
| ECIES over GF(2^n) 233 Decryption | 132.11 | 66.05 |
| ECNR over GF(2^n) 233 Signature | 117.44 | 58.72 |
| ECNR over GF(2^n) 233 Signature with precomputation | 34.86 | 17.43 |
| ECNR over GF(2^n) 233 Verification | 145.14 | 72.57 |
| ECNR over GF(2^n) 233 Verification with precomputation | 59.18 | 29.59 |
| ECDHC over GF(2^n) 233 Key-Pair Generation | 117.21 | 58.60 |
| ECDHC over GF(2^n) 233 Key-Pair Generation with precomputation | 34.15 | 17.07 |
| ECDHC over GF(2^n) 233 Key Agreement | 117.73 | 58.86 |
| ECMQVC over GF(2^n) 233 Key-Pair Generation | 116.98 | 58.49 |
| ECMQVC over GF(2^n) 233 Key-Pair Generation with precomputation | 34.15 | 17.07 |
| ECMQVC over GF(2^n) 233 Key Agreement | 146.39 | 73.19 |