crypto++下载、安装(VS2017)及加解密使用

crpto++

  • 下载
    • 按个人喜好下载,我使用了图中框选的8.8.0 Release.
    • 解压
  • 安装
    • 打开
    • 修改以适应本机配置
    • 整理至标准库
  • 调用
  • 加解密使用

Crypto++(也称为Crypto++ Library或Crypto++ STL)是一个C++密码学库,它提供了各种密码学算法和安全编程工具,使开发人员能够实现数据的加密、解密、签名、验证和其他密码学操作。Crypto++是一个开源项目,具有广泛的应用领域,包括网络通信、数据存储、安全协议、数字签名、加密文件系统等。

以下是Crypto++库的一些重要特点和功能:

  1. 丰富的密码学算法支持:Crypto++支持多种常见的密码学算法,包括对称加密(如AES、DES、3DES)、非对称加密(如RSA、DSA、ECC)、哈希函数(如SHA-1、SHA-256)、消息认证码(MAC)、数字签名、随机数生成器等。它还包括一些高级密码学功能,如密码模式、密码学模板库等。

  2. 跨平台:Crypto++是跨平台的,可以在多个操作系统(如Windows、Linux、macOS等)上运行,并且具有良好的可移植性。

  3. 高性能:Crypto++库经过优化,具有较高的性能,适用于要求快速加密和解密的应用程序。

  4. 开源和自由:Crypto++是一个开源项目,采用公共领域(Public Domain)许可证,因此可以自由使用、修改和分发,无需担心知识产权问题。

  5. 标准C++编写:Crypto++是用标准C++编写的,因此它与C++标准库和其他C++代码兼容。

  6. 灵活的API:Crypto++提供了一个灵活的API,使开发人员能够轻松地集成密码学功能到他们的应用程序中。

  7. 详细的文档和示例:Crypto++附带了丰富的文档和示例,帮助开发人员学习如何使用库中的功能。

Crypto++库是一个受欢迎的密码学库,许多安全敏感的应用程序和系统都在使用它来保护数据的安全性。它提供了强大的密码学工具,使开发人员能够构建安全可靠的应用程序。无论是加密通信、数字签名、文件加密还是其他密码学任务,Crypto++都是一个强大的工具。如果需要在C++应用程序中实现密码学功能,Crypto++是一个值得考虑的选择。

下载

按个人喜好下载,我使用了图中框选的8.8.0 Release.

官网下载
crypto++下载、安装(VS2017)及加解密使用_第1张图片

解压

crypto++下载、安装(VS2017)及加解密使用_第2张图片

安装

打开

请添加图片描述

修改以适应本机配置

  • 选用Release\Debug、Win32\x64,以Release-x64为例;

  • 选中cryptlib -> 属性 -> Windows SDK版本,适配当前VS版本
    请添加图片描述

  • C++ -> 代码生成 -> 运行库 (debug后面加d)
    crypto++下载、安装(VS2017)及加解密使用_第3张图片

  • 右键cryptlib、生成;

  • 修改其他三个SDK, 可以直接选中、右键、重定向项目更改

  • 重新生成cryptdll

  • 结果x64中DLL_Output和Output的生成的结果
    crypto++下载、安装(VS2017)及加解密使用_第4张图片
    crypto++下载、安装(VS2017)及加解密使用_第5张图片

crypto++下载、安装(VS2017)及加解密使用_第6张图片

整理至标准库

  • 创建文件夹cryptopp,并创建子文件夹bin、include、lib
  • 将解压包中所有的.h文件拷贝至include文件夹中,图中只显示部分.h文件
    crypto++下载、安装(VS2017)及加解密使用_第7张图片
    crypto++下载、安装(VS2017)及加解密使用_第8张图片
  • 将Output是生成的结果cryptopp.dll拷贝至bin中
    crypto++下载、安装(VS2017)及加解密使用_第9张图片
  • 将.lib拷贝至lib文件夹中
    crypto++下载、安装(VS2017)及加解密使用_第10张图片

调用

vs标准添加库方法,复述一遍。知道的可跳过。

  • 右键、属性\也可以在属性管理中对应的环境添加属性表,项目中只要添加对应属性表就可以调用对应库。
  • VC++ 目录中:
    • 包含目录添加上述include文件夹
    • 库目录添加上述lib文件夹
    • 链接器 -> 输入 -> 附加依赖项添加:cryptlib.lib 、cryptopp.lib

加解密使用

#include 
#include 
#include 
#include 
#include 

int main()
 {
       using namespace CryptoPP;

       AutoSeededRandomPool rng;

       // 创建一个随机密钥
       SecByteBlock key(AES::DEFAULT_KEYLENGTH);
       rng.GenerateBlock(key, key.size());

       // 创建一个随机IV(初始化向量)
       SecByteBlock iv(AES::BLOCKSIZE);
       rng.GenerateBlock(iv, iv.size());

       // 要加密的字符串
       std::string plaintext = "Hello, World!";
       std::string ciphertext;

       // 加密
       CBC_Mode<AES>::Encryption encryption;
       encryption.SetKeyWithIV(key, key.size(), iv);
       StringSource(plaintext, true, new StreamTransformationFilter(encryption, 
              new HexEncoder(
              new StringSink(ciphertext))));
       std::cout << "加密后的字符串: " << ciphertext << std::endl;

       // 解密
       std::string decryptedtext;
       CBC_Mode<AES>::Decryption decryption;
       decryption.SetKeyWithIV(key, key.size(), iv);
       StringSource(ciphertext, true, new HexDecoder(
              new StreamTransformationFilter(decryption, new 
StringSink(decryptedtext))));
       std::cout << "解密后的字符串: " << decryptedtext << std::endl;

       return 0;
}

请添加图片描述

你可能感兴趣的:(crypto++,c++,visual,studio)