Crypto++™ Library 4.2
What is it?
Crypto++ Library is a free C++ class library of cryptographic schemes.
Currently the library consists of the following, some of which are other people's code, repackaged into classes.
- a class hierarchy with an API defined by abstract base classes
- Proposed AES
(Rijndael)
and other 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
- generic cipher modes: CBC padded, CBC ciphertext stealing (CTS), CFB, OFB, counter mode
- stream ciphers: Panama, ARC4, SEAL, WAKE, Sapphire II, BlumBlumShub
- public key cryptography: RSA,
DSA, ElGamal, Nyberg-Rueppel (NR),
BlumGoldwasser, Rabin, Rabin-Williams (RW), LUC,
LUCELG
- padding schemes for public-key systems: PKCS#1 v2.0, OAEP, PSSR, IEEE P1363 EMSA2
- key agreement schemes: Diffie-Hellman (DH), Unified Diffie-Hellman (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF, XTR-DH
- elliptic curve cryptography: ECDSA, ECNR, ECIES, ECDHC, ECMQVC
- one-way hash functions: SHA-1, MD2, MD4, MD5, HAVAL, RIPEMD-160, Tiger, SHA-2 (SHA-256, SHA-384, and SHA-512), Panama
- message authentication codes: MD5-MAC, HMAC, XOR-MAC, CBC-MAC, DMAC
- cipher constructions based on hash functions: Luby-Rackoff, MDC
- pseudo random number generators (PRNG): ANSI X9.17 appendix C, PGP's RandPool
- 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
- 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
One purpose of Crypto++ is to act as a repository of public domain (not copyrighted)
source code. Although the library is copyrighted as a compilation, the individual files
in it (except for a few exceptions listed in the license) are
in the public domain.
- 8/26/2002 - Added porting note for Sun WorkShop 6 with Forte C++
- 2/19/2002 - Added note that no modification is needed to compile Crypto++ 4.2 with MSVC .NET.
- 11/5/2001 - Version 4.2 released.
- added HMAC support for longer keys
- added MD4 (which is not secure so use for compatibility purposes only)
- added compatibility fixes/workarounds for STLport 4.5, GCC 3.0.2, and MSVC 7.0
- changed MD2 to use public domain code
- fixed a bug with decompressing multiple messages with the same object
- fixed a bug in CBC-MAC with MACing multiple messages with the same object
- fixed a bug in RC5 and RC6 with zero-length keys
- fixed a bug in Adler32 where incorrect checksum may be generated
- 7/1/2001 - Added a list of recommended books for Crypto++ users.
- 6/2/2001 - Daniel LEON's patch for Borland C++Builder 5 has been updated to work around more problems.
- 5/25/2001 - Added links to denis bider's Crypto++ User Guide
and Daniel LEON's patch for compiling with Borland C++Builder 5.
- 4/14/2001 - Posted project file for CodeWarrior 6.1.
Crypto++ was designed to be easily portable to a large variety of platforms.
Unfortunately most compilers do not have a complete implementation of the C++ standard yet, and
only the latest version of Crypto++ incorporates all of the workarounds needed
to compile on most popular compilers. These porting notes will help you compile earlier
versions of Crypto++.
| Compiler | OS
| To Compile Crypto++ 3.2
| To Compile Crypto++ 4.1
| To Compile Crypto++ 4.2
|
| MSVC 6.0 SP5 | WIN32
| no changes needed
| no changes needed
| no changes needed
|
| MSVC .NET | WIN32
| not recommended
| not recommended
| no changes needed
|
| Borland C++Builder 5 | WIN32
| see note
| patch available by Daniel LEON (local mirror)
| no patch available yet
|
| GCC 2.95.2 | UNIX/WIN32/BeOS
| no changes needed
| no changes needed
| no changes needed
|
MSDOS (DJGPP 2.03)
| replace Makefile
| no changes needed
| no changes needed
|
| GCC 3.0.2 | UNIX/WIN32/BeOS
| not recommended
| not recommended
| no changes needed
|
| CodeWarrior Pro 5.3 | MacOS
| no changes needed project file by Ranko Orlic: stuffed, zipped
| no changes needed
| unknown
|
| WIN32
|
| CodeWarrior Pro 6.1 | MacOS
| project file and porting notes by Jeff Watkins
| no changes needed project file now available (based on Ranko Orlic's contribution)
| no changes needed, use 4.1 project file
|
| WIN32
| not recommended
|
| Sun WorkShop 6, Forte C++ | Solaris
| not recommended
| not recommended
| note and diff by David Lamkin
|
Please remember to use the "-a" (auto-convert text files) option when unzipping on a Unix machine.
The zip files should have the following hashes:
crypto32.zip:
MD5: 4691A506C991C366DA4392E97385EABF
SHA-1: AE810841F0F2ECC5332A5DBA0C2C078EFBB9EE42
RIPEMD-160: 28245D6CC799213336BA0572A9D0E6AF4490C73C
SHA-256: BF62FA23AFEF737466F5F8746E59D17DF28CDF223051EA4A9B0BE86F25FF65AA
crypto41.zip:
MD5: AAAA77CF49A8517D815862219FEB4DCD
SHA-1: F4860802824A86F5A737621FD2C9473776859CCE
RIPEMD-160: 2F3A51B1ED1A90E2B740782046F40D2EA17306AD
SHA-256: 72290C6E081494296E4AECE990EF5210ED718E82EE142317CB186B69F35ACC96
crypto42.zip:
MD5: C1700E6E15F3189801E7EA47EEE83078
SHA-1: 505EC40485519971A07DF6708B7DED3E5D3D08C4
RIPEMD-160: 5D4CC8E5987B2416CF7D71AA6276AFAC61702E55
SHA-256: CDF8A1EBB142759E928A323F47F228F4F93CEB2FE97C19DC59D6868989E0D76E
While You Are Downloading
There are two mailing lists for Crypto++.
To Contribute
The Crypto++ source code and FAQ are hosted on
.
- The SourceForge CVS Repository
allows you to view the latest (unreleased) Crypto++
source code and to contribute bug fixes or new features.
- The
Crypto++ Faq-O-Matic
allows you to view frequently asked questions and to contribute new questions or answers.
If you are interested in paid support for Crypto++ or consulting on a Crypto++
related project, please take a look at this
list of companies and individuals providing such services.
This listing is a free service for the Crypto++
community, and anyone may sign up to be listed by following the above link.
Written by: Wei Dai Last modified: 8/26/2002