Crypto++ 3.1 Benchmarks

Here are speed benchmarks for some of the most popular hash algorithms and symmetric and asymmetric ciphers. All were coded in C++ or ported to C++ from C implementations, compiled with Microsoft Visual C++ 6.0 SP2 (optimize for speed, Pentium Pro code generation), and ran on a Celeron 450MHz machine under Windows 2000 beta 3. No assembly language was used.

CipherTotal BytesTimeBytes/Second
MD2838860821.01399267
MD5214748364837.53457214356
SHA-153687091221.1225420024
HAVAL (pass=3)107374182426.59840369268
HAVAL (pass=4)107374182436.34329544668
HAVAL (pass=5)53687091222.53223827042
Tiger53687091234.02915776865
RIPE-MD16053687091222.23224148566
MDC/MD553687091234.7215462871
Luby-Rackoff/MD513421772827.654854167
DES26843545636.4127372170
IDEA13421772821.016388278
RC26710886422.6432963779
RC5 (r=12)53687091220.62926025058
Blowfish26843545629.7839013043
Diamond26710886422.2023022649
Diamond2 Lite13421772837.1443613443
3-WAY20132659220.5199811716
TEA13421772824.1155565736
SAFER (r=8)13421772825.4165280836
GOST13421772825.7275216999
SHARK (r=6)26843545620.98112794216
CAST-12826843545629.7629019403
Square53687091230.49417605788
RC653687091226.53820230270
MARS53687091232.16716690115
Rijndael26843545622.84311751322
Twofish26843545626.39810168780
Serpent26843545638.4456982324
ARC426843545620.49913095051
SEAL214748364835.16161075728
WAKE107374182424.90643111772
Sapphire26843545639.4266808590
MD5-MAC107374182421.49149962396
XMACC/MD5107374182421.61149684968
HMAC/MD5214748364837.88556684276
CBC-MAC/RC653687091229.14218422582
DMAC/RC653687091229.47218216304
BlumBlumShub 51252428820.24925892
BlumBlumShub 102426214424.41510737
BlumBlumShub 204813107234.273824
OperationIterationsTotal TimeMilliseconds/Operation
RSA 512 Encryption109491300
RSA 512 Decryption6886304
Rabin 512 Encryption17164301
Rabin 512 Decryption5128305
BlumGoldwasser 512 Encryption38882300
BlumGoldwasser 512 Decryption5667305
LUC 512 Encryption86813300
LUC 512 Decryption3411308
ElGamal 512 Encryption4257307
ElGamal 512 Encryption with precomputation7563303
ElGamal 512 Decryption8250303
RSA 1024 Encryption41051300
RSA 1024 Decryption10843027
Rabin 1024 Encryption7158304
Rabin 1024 Decryption9593031
BlumGoldwasser 1024 Encryption16913301
BlumGoldwasser 1024 Decryption10143029
LUC 1024 Encryption31013300
LUC 1024 Decryption5833051
ElGamal 1024 Encryption9503031
ElGamal 1024 Encryption with precomputation25823011
ElGamal 1024 Decryption18613016
LUCELG 512 Encryption19523015
LUCELG 512 Decryption3601308
RSA 2048 Encryption13912302
RSA 2048 Decryption16430.2183
Rabin 2048 Encryption26853011
Rabin 2048 Decryption15830.1190
BlumGoldwasser 2048 Encryption5626305
BlumGoldwasser 2048 Decryption16130.2187
LUC 2048 Encryption10278302
LUC 2048 Decryption9330.2324
ElGamal 2048 Encryption21030142
ElGamal 2048 Encryption with precomputation7113042
ElGamal 2048 Decryption4133072
LUCELG 1024 Encryption4313069
LUCELG 1024 Decryption8063037
RSA 512 Signature6919304
RSA 512 Verification113009300
Rabin 512 Signature4855306
Rabin 512 Verification16153301
RW 512 Signature5293305
RW 512 Verification375845300
LUC 512 Signature3392308
LUC 512 Verification89003300
NR 512 Signature8312303
NR 512 Signature with precomputation14585302
NR 512 Verification7190304
NR 512 Verification with precomputation8279303
DSA 512 Signature6318304
DSA 512 Signature with precomputation11306302
DSA 512 Verification5397305
DSA 512 Verification with precomputation6788304
RSA 1024 Signature10863027
RSA 1024 Verification43061300
Rabin 1024 Signature9503031
Rabin 1024 Verification7203304
RW 1024 Signature9703030
RW 1024 Verification187039300
LUC 1024 Signature5833051
LUC 1024 Verification31682300
NR 1024 Signature18923015
NR 1024 Signature with precomputation5131305
NR 1024 Verification16013018
NR 1024 Verification with precomputation3190309
DSA 1024 Signature19503015
DSA 1024 Signature with precomputation5211305
DSA 1024 Verification16523018
DSA 1024 Verification with precomputation3183309
LUCELG 512 Signature3887307
LUCELG 512 Verification19523015
RSA 2048 Signature16530181
RSA 2048 Verification14187302
Rabin 2048 Signature15430194
Rabin 2048 Verification27693010
RW 2048 Signature15630.1192
RW 2048 Verification69270300
LUC 2048 Signature9330.2324
LUC 2048 Verification10337302
NR 2048 Signature4153072
NR 2048 Signature with precomputation14163021
NR 2048 Verification3733080
NR 2048 Verification with precomputation8353035
LUCELG 1024 Signature8613034
LUCELG 1024 Verification42830.170
DH 512 Key-Pair Generation8588303
DH 512 Key-Pair Generation with precomputation15315301
DH 512 Agreement5832305
DH 1024 Key-Pair Generation19243015
DH 1024 Key-Pair Generation with precomputation5254305
DH 1024 Agreement15123019
DH 2048 Key-Pair Generation4213071
DH 2048 Key-Pair Generation with precomputation14383020
DH 2048 Agreement36430.182
MQV 512 Key-Pair Generation8591303
MQV 512 Key-Pair Generation with precomputation14891302
MQV 512 Key Agreement4600306
MQV 1024 Key-Pair Generation19183015
MQV 1024 Key-Pair Generation with precomputation5233305
MQV 1024 Key Agreement104230.128
MQV 2048 Key-Pair Generation42230.171
MQV 2048 Key-Pair Generation with precomputation14343020
MQV 2048 Key Agreement23830.2127
EC over GF(p) 168 Encryption9413031
EC over GF(p) 168 Encryption with precomputation20833014
EC over GF(p) 168 Decryption18763015
EC over GF(p) 168 NR Signature18763015
EC over GF(p) 168 NR Signature with precomputation4120307
EC over GF(p) 168 NR Verification10943027
EC over GF(p) 168 NR Verification with precomputation24613012
EC over GF(p) 168 DHC Key-Pair Generation18813015
EC over GF(p) 168 DHC Key-Pair Generation with precomputation4150307
EC over GF(p) 168 DHC Agreement18803015
EC over GF(p) 168 MQVC Key-Pair Generation18803015
EC over GF(p) 168 MQVC Key-Pair Generation with precomputation4150307
EC over GF(p) 168 MQVC Key Agreement10483028
EC over GF(2^n) 155 Encryption7673039
EC over GF(2^n) 155 Encryption with precomputation22793013
EC over GF(2^n) 155 Decryption15063019
EC over GF(2^n) 155 Signature14913020
EC over GF(2^n) 155 Signature with precomputation4516306
EC over GF(2^n) 155 Verification12243024
EC over GF(2^n) 155 Verification with precomputation26363011
EC over GF(2^n) 155 DHC Key-Pair Generation15363019
EC over GF(2^n) 155 DHC Key-Pair Generation with precomputation4556306
EC over GF(2^n) 155 DHC Agreement15303019
EC over GF(2^n) 155 MQVC Key-Pair Generation15333019
EC over GF(2^n) 155 MQVC Key-Pair Generation with precomputation4570306
EC over GF(2^n) 155 MQVC Key Agreement12023024

Notes


Written by: Wei Dai <weidai@eskimo.com> Last modified: 4/30/1999