Here are speed benchmarks for some of the most commonly used cryptographic algorithms. All were coded in C++, compiled with Microsoft Visual C++ 2005 SP1 (whole program optimization, optimize for speed), and ran on an Intel Core 2 1.83 GHz processor under Windows XP SP 2 in 32-bit mode. x86/MMX/SSE2 assembly language routines were used for integer arithmetic, AES, VMAC, Sosemanuk, Panama, Salsa20, SHA-512, Tiger, and Whirlpool. (OpenMP support was disabled so only one core of the CPU was used for this benchmark.) The results from the same binary running on an Intel Pentium 4 (Northwood) CPU are available here.
Also available are benchmarks that ran on an AMD Opteron 2.4 GHz processor under Linux 2.6.18. Those were compiled with GCC 4.1.1 using -O2 optimization, and x86-64/MMX/SSE2 assembly language routines were used for integer arithmetic, AES, VMAC, Sosemanuk, Panama, Salsa20, and Whirlpool.
Algorithm | MiB/Second | Cycles Per Byte | Microseconds to Setup Key and IV | Cycles to Setup Key and IV |
---|---|---|---|---|
VMAC(AES)-64 | 1489 | 1.2 | 3.066 | 5611 |
VMAC(AES)-128 | 794 | 2.2 | 3.597 | 6582 |
HMAC(SHA-1) | 152 | 11.5 | 0.546 | 999 |
Two-Track-MAC | 106 | 16.4 | 0.042 | 77 |
CBC-MAC/AES | 86 | 20.2 | 0.287 | 525 |
DMAC/AES | 82 | 21.3 | 1.739 | 3183 |
CRC-32 | 256 | 6.8 | ||
Adler-32 | 936 | 1.9 | ||
MD5 | 258 | 6.8 | ||
SHA-1 | 155 | 11.3 | ||
SHA-256 | 81 | 21.5 | ||
SHA-512 | 99 | 17.6 | ||
Tiger | 217 | 8.0 | ||
Whirlpool | 58 | 30.0 | ||
RIPEMD-160 | 108 | 16.1 | ||
RIPEMD-320 | 111 | 15.8 | ||
RIPEMD-128 | 155 | 11.3 | ||
RIPEMD-256 | 159 | 11.0 | ||
Panama-LE | 851 | 2.1 | 1.605 | 2937 |
Panama-BE | 405 | 4.3 | 2.639 | 4830 |
Salsa20 | 318 | 5.5 | 0.309 | 565 |
Salsa20/12 | 486 | 3.6 | 0.408 | 747 |
Salsa20/8 | 669 | 2.6 | 0.406 | 743 |
Sosemanuk | 739 | 2.4 | 1.115 | 2040 |
MARC4 | 128 | 13.6 | 3.800 | 6954 |
SEAL-3.0-BE | 372 | 4.7 | 60.103 | 109988 |
SEAL-3.0-LE | 377 | 4.6 | 60.133 | 110043 |
WAKE-OFB-BE | 206 | 8.5 | 2.790 | 5106 |
WAKE-OFB-LE | 200 | 8.7 | 2.778 | 5084 |
AES/ECB (128-bit key) | 99 | 17.7 | 0.248 | 454 |
AES/ECB (192-bit key) | 86 | 20.2 | 0.242 | 443 |
AES/ECB (256-bit key) | 77 | 22.6 | 0.312 | 572 |
AES/CTR (128-bit key) | 96 | 18.1 | 0.620 | 1134 |
AES/OFB (128-bit key) | 83 | 21.1 | 0.564 | 1033 |
AES/CFB (128-bit key) | 69 | 25.3 | 0.746 | 1366 |
AES/CBC (128-bit key) | 84 | 20.9 | 0.431 | 789 |
Camellia/ECB (128-bit key) | 49 | 35.6 | 0.174 | 318 |
Camellia/ECB (256-bit key) | 38 | 46.0 | 0.269 | 492 |
Twofish | 62 | 28.1 | 7.077 | 12950 |
Serpent | 33 | 53.3 | 0.736 | 1346 |
CAST-256 | 38 | 45.6 | 2.185 | 3998 |
RC6 | 103 | 16.9 | 2.379 | 4353 |
MARS | 74 | 23.7 | 2.924 | 5351 |
SHACAL-2/ECB (128-bit key) | 55 | 31.7 | 0.411 | 752 |
SHACAL-2/ECB (512-bit key) | 55 | 32.0 | 0.436 | 798 |
DES | 34 | 51.1 | 6.975 | 12765 |
DES-XEX3 | 28 | 61.4 | 7.128 | 13045 |
DES-EDE3 | 13 | 131.2 | 25.240 | 46190 |
IDEA | 36 | 48.6 | 0.220 | 403 |
RC5 (r=16) | 82 | 21.3 | 1.989 | 3640 |
Blowfish | 61 | 28.6 | 61.035 | 111694 |
TEA/ECB | 27 | 63.9 | 0.183 | 334 |
XTEA/ECB | 27 | 64.3 | 0.183 | 335 |
CAST-128 | 57 | 30.5 | 0.497 | 910 |
SKIPJACK | 10 | 173.8 | 2.991 | 5474 |
Operation | Milliseconds/Operation | Megacycles/Operation |
---|---|---|
RSA 1024 Encryption | 0.07 | 0.13 |
RSA 1024 Decryption | 1.52 | 2.78 |
LUC 1024 Encryption | 0.07 | 0.13 |
LUC 1024 Decryption | 2.32 | 4.25 |
DLIES 1024 Encryption | 0.83 | 1.53 |
DLIES 1024 Encryption with precomputation | 1.45 | 2.65 |
DLIES 1024 Decryption | 3.06 | 5.60 |
LUCELG 512 Encryption | 0.57 | 1.05 |
LUCELG 512 Encryption with precomputation | 0.57 | 1.05 |
LUCELG 512 Decryption | 0.62 | 1.13 |
RSA 2048 Encryption | 0.15 | 0.28 |
RSA 2048 Decryption | 5.95 | 10.89 |
LUC 2048 Encryption | 0.17 | 0.32 |
LUC 2048 Decryption | 9.71 | 17.77 |
DLIES 2048 Encryption | 4.26 | 7.79 |
DLIES 2048 Encryption with precomputation | 4.69 | 8.59 |
DLIES 2048 Decryption | 18.84 | 34.48 |
LUCELG 1024 Encryption | 1.86 | 3.40 |
LUCELG 1024 Encryption with precomputation | 1.89 | 3.45 |
LUCELG 1024 Decryption | 1.67 | 3.05 |
RSA 1024 Signature | 1.42 | 2.60 |
RSA 1024 Verification | 0.07 | 0.13 |
RW 1024 Signature | 2.01 | 3.67 |
RW 1024 Verification | 0.04 | 0.08 |
LUC 1024 Signature | 2.37 | 4.34 |
LUC 1024 Verification | 0.07 | 0.13 |
NR 1024 Signature | 0.47 | 0.86 |
NR 1024 Signature with precomputation | 0.41 | 0.75 |
NR 1024 Verification | 0.50 | 0.92 |
NR 1024 Verification with precomputation | 0.64 | 1.17 |
DSA 1024 Signature | 0.47 | 0.85 |
DSA 1024 Signature with precomputation | 0.41 | 0.76 |
DSA 1024 Verification | 0.52 | 0.95 |
DSA 1024 Verification with precomputation | 0.66 | 1.21 |
LUC-HMP 512 Signature | 0.60 | 1.09 |
LUC-HMP 512 Signature with precomputation | 0.59 | 1.08 |
LUC-HMP 512 Verification | 0.62 | 1.13 |
LUC-HMP 512 Verification with precomputation | 0.67 | 1.22 |
ESIGN 1023 Signature | 0.21 | 0.38 |
ESIGN 1023 Verification | 0.07 | 0.12 |
ESIGN 1536 Signature | 0.38 | 0.69 |
ESIGN 1536 Verification | 0.14 | 0.25 |
RSA 2048 Signature | 5.95 | 10.89 |
RSA 2048 Verification | 0.15 | 0.28 |
RW 2048 Signature | 7.27 | 13.31 |
RW 2048 Verification | 0.09 | 0.17 |
LUC 2048 Signature | 9.71 | 17.77 |
LUC 2048 Verification | 0.17 | 0.32 |
NR 2048 Signature | 2.11 | 3.87 |
NR 2048 Signature with precomputation | 0.93 | 1.71 |
NR 2048 Verification | 2.35 | 4.31 |
NR 2048 Verification with precomputation | 1.44 | 2.63 |
LUC-HMP 1024 Signature | 1.87 | 3.42 |
LUC-HMP 1024 Signature with precomputation | 1.88 | 3.45 |
LUC-HMP 1024 Verification | 1.92 | 3.52 |
LUC-HMP 1024 Verification with precomputation | 1.91 | 3.50 |
ESIGN 2046 Signature | 0.46 | 0.84 |
ESIGN 2046 Verification | 0.15 | 0.27 |
XTR-DH 171 Key-Pair Generation | 0.77 | 1.40 |
XTR-DH 171 Key Agreement | 1.52 | 2.77 |
XTR-DH 342 Key-Pair Generation | 1.84 | 3.36 |
XTR-DH 342 Key Agreement | 3.72 | 6.80 |
DH 1024 Key-Pair Generation | 0.44 | 0.80 |
DH 1024 Key-Pair Generation with precomputation | 0.74 | 1.36 |
DH 1024 Key Agreement | 1.15 | 2.10 |
DH 2048 Key-Pair Generation | 2.13 | 3.91 |
DH 2048 Key-Pair Generation with precomputation | 2.38 | 4.35 |
DH 2048 Key Agreement | 3.77 | 6.91 |
LUCDIF 512 Key-Pair Generation | 0.30 | 0.54 |
LUCDIF 512 Key-Pair Generation with precomputation | 0.30 | 0.54 |
LUCDIF 512 Key Agreement | 0.62 | 1.13 |
LUCDIF 1024 Key-Pair Generation | 0.94 | 1.71 |
LUCDIF 1024 Key-Pair Generation with precomputation | 0.98 | 1.79 |
LUCDIF 1024 Key Agreement | 1.68 | 3.07 |
MQV 1024 Key-Pair Generation | 0.42 | 0.77 |
MQV 1024 Key-Pair Generation with precomputation | 0.39 | 0.71 |
MQV 1024 Key Agreement | 0.86 | 1.57 |
MQV 2048 Key-Pair Generation | 2.09 | 3.83 |
MQV 2048 Key-Pair Generation with precomputation | 0.91 | 1.66 |
MQV 2048 Key Agreement | 3.85 | 7.04 |
ECIES over GF(p) 256 Encryption | 5.57 | 10.19 |
ECIES over GF(p) 256 Encryption with precomputation | 4.12 | 7.53 |
ECIES over GF(p) 256 Decryption | 3.91 | 7.15 |
ECNR over GF(p) 256 Signature | 2.82 | 5.17 |
ECNR over GF(p) 256 Signature with precomputation | 2.13 | 3.90 |
ECNR over GF(p) 256 Verification | 8.33 | 15.25 |
ECNR over GF(p) 256 Verification with precomputation | 3.60 | 6.58 |
ECDHC over GF(p) 256 Key-Pair Generation | 2.82 | 5.15 |
ECDHC over GF(p) 256 Key-Pair Generation with precomputation | 2.06 | 3.78 |
ECDHC over GF(p) 256 Key Agreement | 2.85 | 5.21 |
ECMQVC over GF(p) 256 Key-Pair Generation | 2.79 | 5.11 |
ECMQVC over GF(p) 256 Key-Pair Generation with precomputation | 2.07 | 3.80 |
ECMQVC over GF(p) 256 Key Agreement | 8.55 | 15.64 |
ECIES over GF(2^n) 233 Encryption | 21.51 | 39.35 |
ECIES over GF(2^n) 233 Encryption with precomputation | 6.33 | 11.58 |
ECIES over GF(2^n) 233 Decryption | 12.12 | 22.18 |
ECNR over GF(2^n) 233 Signature | 10.70 | 19.57 |
ECNR over GF(2^n) 233 Signature with precomputation | 3.13 | 5.72 |
ECNR over GF(2^n) 233 Verification | 13.16 | 24.08 |
ECNR over GF(2^n) 233 Verification with precomputation | 5.48 | 10.03 |
ECDHC over GF(2^n) 233 Key-Pair Generation | 10.64 | 19.47 |
ECDHC over GF(2^n) 233 Key-Pair Generation with precomputation | 3.06 | 5.60 |
ECDHC over GF(2^n) 233 Key Agreement | 10.50 | 19.22 |
ECMQVC over GF(2^n) 233 Key-Pair Generation | 10.64 | 19.47 |
ECMQVC over GF(2^n) 233 Key-Pair Generation with precomputation | 3.18 | 5.82 |
ECMQVC over GF(2^n) 233 Key Agreement | 13.51 | 24.73 |
modulus | exponent |
---|---|
1024 | 164 |
2048 | 226 |