项目简介
Crypto++是一个免费的C++加密算法类库,由Wei Dai最初编写,现由多个团队成员和社区共同维护。该库提供丰富的加密算法和相关功能,支持多种编译器和平台,适用于各类需要加密的应用场景。
项目的主要特性和功能
- 丰富的加密算法:涵盖认证加密方案(GCM、CCM、EAX)、高速流密码(ChaCha、Salsa20)、AES及候选算法(AES、Twofish)、其他分组密码(RC5、SM4)、分组密码操作模式(ECB、CBC)、消息认证码(HMAC、Poly1305)、哈希函数(SHA - 2、SHA - 3)、公钥密码学算法(RSA、DSA)、密钥协商方案(Diffie - Hellman)、椭圆曲线密码学算法(ECDSA)等。
- 其他功能特性:
- 伪随机数生成器(PRNG),如ANSI X9.17附录C、RandomPool等。
- 基于密码的密钥派生函数,如PBKDF1、PBKDF2等。
- Shamir秘密共享方案和Rabin信息分散算法(IDA)。
- 快速多精度整数(大整数)和多项式运算。
- 有限域算术,包括GF(p)和GF(2^n)。
- 素数生成和验证。
- 有用的非加密算法,如DEFLATE压缩/解压缩、Hex和Base64编码/解码、32位CRC和Adler32校验和。
- 平台和操作系统特性的类包装器,如高分辨率定时器、套接字、命名管道等。
- 高级接口,使用过滤器/管道隐喻。
- 基准测试和验证测试。
- 支持多种架构的内联代码,如x86、x64、ARM等,并具有运行时CPU特性检测和代码选择功能。
安装使用步骤
Windows系统(使用MSVC编译)
- 打开“cryptest.sln”(适用于MSVC 2003 - 2015)。
- 选择并构建以下项目之一:
- “cryptest Non - DLL - Import Configuration”:构建完整的静态库以及完整的测试驱动程序。
- “cryptest DLL - Import Configuration”:构建仅包含DLL中没有的算法的静态库,以及使用DLL和静态库的完整测试驱动程序。
- “cryptdll”:构建DLL。若将Crypto++用作FIPS验证模块,需使用经过FIPS验证过程的预构建DLL。
- “dlltest”:构建仅使用DLL的示例应用程序。
- 使用Crypto++ DLL时,在包含任何其他Crypto++头文件之前包含“dll.h”,并将DLL放在与.exe文件相同的目录中。使用静态库时,将“cryptlib”项目设置为应用程序项目的依赖项,或在项目设置中指定其为额外的链接库。
- 确保库和应用程序使用相同的C++运行时库和调用约定。
Linux和类Unix系统
- 确保使用GNU Make和GNU ld。
- 使用提供的Makefile编译Crypto++,命令如下:
bash make
编译过程将生成两个文件:libcryptopp.a
和cryptest.exe
。 - 运行验证套件:
bash ./cryptest.exe v
运行额外的测试向量:bash ./cryptest.exe tv all
- 如果使用替代构建系统(如Autotools或CMake),确保在生产或发布构建中包含
-DNDEBUG
选项。 - 如果使用替代构建系统并收集源文件列表,确保
cryptlib.cpp
、cpu.cpp
和integer.cpp
位于列表的开头,并按相同顺序链接对应的目标文件。 - 如果链接器支持初始化属性(如
init_priority
),可以定义CRYPTOPP_INIT_PRIORITY
来控制对象初始化顺序。 - 建议在程序中使用静态版本的库,以避免二进制植入和其他
LD_PRELOAD
技巧。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】