Crypto++: a C++ Class Library of Cryptographic Schemes
Version 5.2.1 7/21/2004
This library includes:
- 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,
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, ECDH, ECMQV
- one-way hash functions: SHA-1, MD2, MD4, MD5, HAVAL, RIPEMD-
128, RIPEMD-256, RIPEMD-160, RIPEMD-320, Tiger, SHA-2 (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
- 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
You are welcome to use it for any purpose without paying me, but see
license.txt for the fine print.
This version of Crypto++ has been compiled successfully with MSVC 6.0 SP5
and .NET 2003 on Windows XP, GCC 2.95.4 on FreeBSD 4.6, GCC 2.95.3 on
Linux 2.4 and SunOS 5.8, GCC 3.4 on Cygwin 1.5.10, and Metrowerks
CodeWarrior 8.3 for Windows and MacOS.
*** Important Usage Notes ***
1. If a constructor for A takes a pointer to an object B (except primitive
types such as int and char), then A owns B and will delete B at A's
destruction. If a constructor for A takes a reference to an object B,
then the caller retains ownership of B and should not destroy it until
A no longer needs it.
2. Crypto++ is thread safe at the class level. This means you can use
Crypto++ safely in a multithreaded application, but you must provide
synchronization when multiple threads access a common Crypto++ object.
*** MSVC-Specific Information ***
On Windows, Crypto++ can be compiled into 3 forms: a static library
including all algorithms, a DLL with only FIPS Approved algorithms, and
a static library with only algorithms not in the DLL.
(FIPS Approved means Approved according to the FIPS 140-2 standard.)
The DLL may be used by itself, or it may be used together with the second
form of the static library. MSVC project files are included to build
all three forms, and sample applications using each of the three forms
are also included.
To compile Crypto++ with MSVC, open the "cryptest.dsw" workspace file
and build one or more of the following projects:
cryptdll - This builds the DLL. Please note that if you wish to use Crypto++
as a FIPS validated module, you must use a pre-built DLL that has undergone
the FIPS validation process instead of building your own.
dlltest - This builds a sample application that only uses the DLL.
cryptest Non-DLL-Import Configuration - This builds the full static library
along with a full test driver.
cryptest DLL-Import Configuration - This builds a static library containing
only algorithms not in the DLL, along with a full test driver that uses
both the DLL and the static library.
To use the Crypto++ DLL in your application, #include "dll.h" before including
any other Crypto++ header files, and place the DLL in the same directory as
your .exe file. dll.h includes the line #pragma comment(lib, "cryptopp")
so you don't have to explicitly list the import library in your project
settings. To use a static library form of Crypto++, specify it as
an additional library to link with in your project settings.
In either case you should check the compiler options to
make sure that the library and your application are using the same C++
run-time libraries and calling conventions.
*** DLL Memory Management ***
Because it's possible for the Crypto++ DLL to delete objects allocated
by the calling application, they must use the same C++ memory heap. Three
methods are provided to achieve this.
1. The calling application can tell Crypto++ what heap to use. This method
is required when the calling application uses a non-standard heap.
2. Crypto++ can tell the calling application what heap to use. This method
is required when the calling application uses a statically linked C++ Run
Time Library. (Method 1 does not work in this case because the Crypto++ DLL
is initialized before the calling application's heap is initialized.)
3. Crypto++ can automatically use the heap provided by the calling application's
dynamically linked C++ Run Time Library. The calling application must
make sure that the dynamically linked C++ Run Time Library is initialized
before Crypto++ is loaded. (At this time it is not clear if it is possible
to control the order in which DLLs are initialized on Windows 9x machines,
so it might be best to avoid using this method.)
When Crypto++ attaches to a new process, it searches all modules loaded
into the process space for exported functions "GetNewAndDeleteForCryptoPP"
and "SetNewAndDeleteFromCryptoPP". If one of these functions is found,
Crypto++ uses methods 1 or 2, respectively, by calling the function.
Otherwise, method 3 is used.
*** GCC-Specific Information ***
A makefile is included for you to compile Crypto++ with GCC. Make sure
you are using GNU Make and GNU ld. The make process will produce two files,
libcryptopp.a and cryptest.exe. Run "cryptest.exe v" for the validation
suite.
*** Documentation and Support ***
Crypto++ is documented through inline comments in header files, which are
processed through Doxygen to produce an HTML reference manual. You can find
a link to the manual from http://www.cryptopp.com. Also at that site is
the Crypto++ FAQ, which you should browse through before attempting to
use this library, because it will likely answer many of questions that
may come up.
If you run into any problems, please try the Crypto++ mailing list.
The subscription information and the list archive are available on
http://www.cryptopp.com. You can also email me directly at
cryptopp@weidai.com, but you will probably get a faster response through
the mailing list.
*** History ***
1.0 - First public release. Withdrawn at the request of RSA DSI.
- included Blowfish, BBS, DES, DH, Diamond, DSA, ElGamal, IDEA,
MD5, RC4, RC5, RSA, SHA, WAKE, secret sharing, DEFLATE compression
- had a serious bug in the RSA key generation code.
1
没有合适的资源?快使用搜索试试~ 我知道了~
几乎涵盖了所有加密算法的源代码(C语言)
共338个文件
h:125个
cpp:123个
dat:56个
4星 · 超过85%的资源 需积分: 15 73 下载量 187 浏览量
2009-07-04
00:24:31
上传
评论 3
收藏 1.16MB RAR 举报
温馨提示
包含了几乎所有常见加密算法的实现,包括RC4、AES、DES、3DES;RSA;SHA1、MD4、MD5;BASE64,还有其他算法。
资源推荐
资源详情
资源评论
收起资源包目录
几乎涵盖了所有加密算法的源代码(C语言) (338个子文件)
sharkbox.cpp 119KB
integer.cpp 95KB
validat1.cpp 45KB
tigertab.cpp 44KB
rdtables.cpp 37KB
whrlpool.cpp 34KB
validat3.cpp 32KB
squaretb.cpp 32KB
ripemd.cpp 31KB
casts.cpp 29KB
filters.cpp 28KB
eccrypto.cpp 26KB
fipsalgt.cpp 24KB
nbtheory.cpp 24KB
validat2.cpp 24KB
test.cpp 24KB
zdeflate.cpp 24KB
cryptlib.cpp 20KB
fipstest.cpp 20KB
gf2n.cpp 19KB
zinflate.cpp 17KB
tftables.cpp 16KB
polynomi.cpp 14KB
bfinit.cpp 14KB
asn.cpp 14KB
datatest.cpp 13KB
bench2.cpp 13KB
des.cpp 13KB
queue.cpp 13KB
bench.cpp 13KB
ecp.cpp 12KB
ida.cpp 11KB
ttmac.cpp 11KB
serpent.cpp 11KB
cast.cpp 11KB
socketft.cpp 11KB
rijndael.cpp 10KB
sha.cpp 10KB
haval.cpp 10KB
algebra.cpp 9KB
camellia.cpp 9KB
gfpcrypt.cpp 8KB
rsa.cpp 8KB
default.cpp 8KB
wait.cpp 8KB
network.cpp 8KB
crc.cpp 8KB
channels.cpp 8KB
ec2n.cpp 7KB
marss.cpp 7KB
modes.cpp 7KB
pubkey.cpp 6KB
luc.cpp 6KB
dessp.cpp 6KB
safer.cpp 6KB
skipjack.cpp 6KB
esign.cpp 6KB
dlltest.cpp 6KB
basecode.cpp 6KB
rw.cpp 6KB
md5mac.cpp 6KB
rabin.cpp 6KB
mars.cpp 5KB
pssr.cpp 5KB
strciphr.cpp 5KB
square.cpp 5KB
pkcspad.cpp 5KB
files.cpp 5KB
shark.cpp 4KB
winpipes.cpp 4KB
mqueue.cpp 4KB
md5.cpp 4KB
seal.cpp 4KB
twofish.cpp 4KB
dll.cpp 4KB
shacal2.cpp 4KB
eprecomp.cpp 4KB
idea.cpp 4KB
panama.cpp 4KB
rng.cpp 4KB
rc2.cpp 4KB
osrng.cpp 3KB
tea.cpp 3KB
gost.cpp 3KB
3way.cpp 3KB
hrtimer.cpp 3KB
xtrcrypt.cpp 3KB
oaep.cpp 3KB
md2.cpp 3KB
regtest.cpp 3KB
wake.cpp 3KB
xtr.cpp 3KB
md4.cpp 3KB
iterhash.cpp 3KB
gzip.cpp 3KB
dsa.cpp 3KB
zlib.cpp 2KB
rc6.cpp 2KB
fips140.cpp 2KB
blowfish.cpp 2KB
共 338 条
- 1
- 2
- 3
- 4
firekylin_2000
- 粉丝: 9
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页