Crypto++ project is a free C++ class library of cryptographic schemes.
Product's homepage
Here are some key features of "Crypto++":
· a class hierarchy with an API defined by abstract base classes
· AES (Rijndael) and AES candidates: RC6, MARS, Twofish, Serpent, CAST-256
· other symmetric block ciphers: IDEA, DES, Triple-DES (DES-EDE2 and DES-EDE3), DESX (DES-XEX3), RC2, RC5, Blowfish, Diamond2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, Skipjack, Camellia, SHACAL-2
· generic cipher modes: ECB, CBC, CBC ciphertext stealing (CTS), CFB, OFB, counter mode (CTR)
· stream ciphers: Panama, ARC4, SEAL, WAKE, WAKE-OFB, BlumBlumShub
· 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
· one-way hash functions: SHA-1, MD2, MD4, MD5, HAVAL, RIPEMD-128, RIPEMD-256, RIPEMD-160, RIPEMD-320, Tiger, SHA-2 (SHA-224, SHA-256, SHA-384, and SHA-512), Panama, Whirlpool
· message authentication codes: MD5-MAC, HMAC, XOR-MAC, CBC-MAC, DMAC, Two-Track-MAC
· cipher constructions based on hash functions: Luby-Rackoff, MDC
· pseudo random number generators (PRNG): ANSI X9.17 appendix C, PGP's RandPool
· password based key derivation functions: PBKDF1 and PBKDF2 from PKCS #5
· Shamir's secret sharing scheme and Rabin's information dispersal algorithm (IDA)
· DEFLATE (RFC 1951) compression/decompression with gzip (RFC 1952) and zlib (RFC 1950) format support
· fast multi-precision integer (bignum) and polynomial operations, with SSE2 optimizations for Pentium 4 processors, and support for 64-bit CPUs
· finite field arithmetics, including GF(p) and GF(2^n)
· prime number generation and verification
· various miscellaneous modules such as base 64 coding and 32-bit CRC
class wrappers for these operating system features (optional):
· high resolution timers on Windows, Unix, and MacOS
· Berkeley and Windows style sockets
· Windows named pipes
· /dev/random and /dev/urandom on Linux and FreeBSD
· Microsoft's CryptGenRandom on Windows
· A high level interface for most of the above, using a filter/pipeline metaphor
· benchmarks and validation testing
· FIPS 140-2 Validated
What's New in This Release: [ read full changelog ]
· added AuthenticatedSymmetricCipher interface class and Filter wrappers
· added CCM, GCM (with SSE2 assembly), EAX, CMAC, XSalsa20, and SEED
· added support for variable length IVs
· improved AES and SHA-256 speed on x86 and x64
· fixed incorrect VMAC computation on message lengths that are >64 mod 128 (x86 assembly version is not affected)
· fixed compiler error in vmac.cpp on x86 with GCC -fPIC
· fixed run-time validation error on x86-64 with GCC 4.3.2 -O2
· fixed HashFilter bug when putMessage=true
· removed WORD64_AVAILABLE; compiler support for 64-bit int is now required
· ported to GCC 4.3, C++Builder 2009, Sun CC 5.10, Intel C++ Compiler 11